小编Max*_*cia的帖子

如何在django-rest-framework中通过关系使用ManytoManyField

基本上我有这样的模型:

class Playlist(models.Model):
    key = models.CharField(max_length=255,blank=True, unique=True)
    user = models.ForeignKey(User)
    title = models.CharField(max_length=200)
    pub_date = models.DateTimeField(auto_now_add=True)
    videos = models.ManyToManyField(Video, through='PlaylistVideo')

class PlaylistVideo(models.Model):
    playlist = models.ForeignKey(Playlist)
    video =    models.ForeignKey(Video)
    position = models.IntegerField()

class Video(models.Model):
    title = models.CharField(max_length=255,blank=True)
    description = models.TextField(blank=True)
    thumb =  models.URLField(blank=True)
    duration = models.IntegerField(default=0)
Run Code Online (Sandbox Code Playgroud)

现在我想要一个API来返回这样的PLAYLISTS ...但是视频应该按PlaylistVideo模型中的POSITION排序

{
        "key": "h8x3",
        "title": "First Playlist",
        "pub_date": "2012-10-11T17:00:26Z",
        "videos": [
            {
                ....
            },
            {
                ....
            }
        ]
    },
Run Code Online (Sandbox Code Playgroud)

我该怎么办呢?

python django-rest-framework

19
推荐指数
2
解决办法
5153
查看次数

如何将一个非常大的OpenStreetMap文件划分为R中的较小文件而不会耗尽内存?

我目前正在寻找不大于墨西哥城市规模的地图文件(最大,经度约为3度/纬度).但是,在尝试这样做时,我一直遇到内存问题(至少).OSM XML对象的文件大小为1.9 GB,以供参考.

library(osmar)
get.map.for.municipality<-function(province,municipality){
  base.map.filename = 'OpenStreetMap/mexico-latest.osm'
  #bounds.list is a list that contains the boundaries
  bounds = bounds.list[[paste0(province,'*',municipality)]]
  my.bbox = corner_bbox(bounds[1],bounds[2],bounds[3],bounds[4])
  my.map.source = osmsource_file(base.map.filename)
  my.map = get_osm(my.bbox,my.map.source)
  return(my.map)
}
Run Code Online (Sandbox Code Playgroud)

我在循环中运行它,但它甚至无法通过第一个循环.当我尝试运行它时,我的计算机冻结了,我只能用手机截取屏幕截图.记忆在几分钟内稳定地倾斜,然后它很快就快速上升,在计算机冻结之前我无法做出反应.

这样做的更好方法是什么?我希望必须运行这个循环大约100-150次,所以任何在内存方面更有效的方法都会有所帮助.我不想从API服务下载较小的文件.如果有必要,我愿意使用另一种编程语言(最好是Python或C++),但我更喜欢将它保存在R.

在此输入图像描述

memory r openstreetmap osmar

6
推荐指数
1
解决办法
866
查看次数

为什么sum()在这个dplyr表达式中工作,而quantile()不是?

我想计算数据帧每一行的分位数,并将结果作为矩阵返回.因为我想计算和任意数量的分位数(我想,一次计算它们的速度更快,而不是重新运行该函数),我尝试使用我在这个问题中找到的公式:

library(dplyr)
df<- as.data.frame(matrix(rbinom(1000,10,0.5),nrow = 2))

interim_res <- df %>% 
              rowwise() %>% 
              do(out = sapply(min(df):max(df), function(i) sum(i==.)))

interim_res <- interim_res[[1]] %>% do.call(rbind,.) %>% as.data.frame(.)
Run Code Online (Sandbox Code Playgroud)

这是有道理的,但是当我尝试将相同的框架应用于quantile()函数时,如此处编码,

interim_res <- df %>% 
              rowwise() %>% 
              do(out = quantile(.,probs = c(0.1,0.5,0.9)))

interim_res <- interim_res[[1]] %>% do.call(rbind,.) %>% as.data.frame(.)
Run Code Online (Sandbox Code Playgroud)

我收到此错误消息:

sort.int中的错误(x,na.last = na.last,减少=减少,...):

'x'必须是原子的

为什么我会收到错误quantile而不是sum?我该如何解决这个问题?

r dplyr

4
推荐指数
1
解决办法
446
查看次数

当我有自定义身份验证模型时,如何登录到 Django Rest 可浏览 API?

我有一个自定义用户模型,如下所示 account/models.py

from django.contrib.auth.modles import AbstractUser
from django.db.models.signals import post_save
from rest_framework.authtoken.models import Token
from django.db import models
from django.dispatch import receiver
from django.conf import settings

@receiver(post_save, sender=settings.AUTH_USER_MODEL)                                
def create_auth_token(sender, instance=None, created=False, **kwargs):               
    if created:                                                                      
        Token.objects.create(user=instance)                                          

class UserProfile(AbstractUser):                                                     
    gender = models.CharField(max_length=1,default='') 
Run Code Online (Sandbox Code Playgroud)

并在 settings.py

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework.authentication.TokenAuthentication',
    )
}
Run Code Online (Sandbox Code Playgroud)

...

AUTH_USER_MODEL = "account.UserProfile"
Run Code Online (Sandbox Code Playgroud)

但是,每当我尝试登录可浏览的 API 时,它都会要求我使用正确的用户名和密码,并且我使用的是标记为超级用户和员工的用户凭据。

manage.py runserver控制台显示这条消息:

[27/Jul/2016 20:41:39] "POST /api-auth/login/ HTTP/1.1" 200 2897
Run Code Online (Sandbox Code Playgroud)

python django rest login

4
推荐指数
2
解决办法
3677
查看次数

从 PostgreSQL 文本正文中提取长度为 1、2 和 3 的所有 n 元语法的最快方法是什么?

我有很多文本体,对于每个文本体,我想提取所有一元组、二元组和三元组(单词,而不是字符),并将计数和 ngram 长度插入到另一个表中。

现在我正在考虑使用WITH ORDINALITY取消嵌套正则表达式分割的文本正文,然后对二元组和三元组使用多个子查询,但这需要 ordering 。但是,我认为这可能是一种低效的方法,因为这种位置数据通常应该通过索引访问。

我目前正在用Python实现这个,一个巨大的瓶颈是字典插入和字典/集合的停用词搜索。

这是一个非常基本的例子:

输入:

This is a small, small sentence.

输出

ngram                | count | length
-------------------------------------
this                 | 1 | 1
is                   | 1 | 1
a                    | 1 | 1
small                | 2 | 1
sentence             | 1 | 1
this is              | 1 | 2 
is a                 | 1 | 2
a small              | 1 | 2
small small          | 1 | 2
small sentence       | 1 | 2
this is …
Run Code Online (Sandbox Code Playgroud)

postgresql text-processing n-gram

4
推荐指数
1
解决办法
1381
查看次数

如何使用ggplot2手动为绘图或条形图中的每个数据点指定十六进制颜色?

我有一个数据集,其中一个变量是一个带有十六进制字符的因式数组(例如'#00FF00').我想要尝试做的事情之一是创建一个条形图,其中包含所有不同的颜色.

我试过用

cg<-ggplot(my.data,aes(x=factor(1),fill=as.character(my.color)))

其次是

cg+geom_bar()

但绘制的唯一颜色似乎是默认比例的颜色.我试过省略代码的as.character()部分,但它没有什么区别.使用geom_point()制作2d图时,我也遇到了同样的问题.

如果我尝试类似的东西

plot(my.data$var1,my.data$var2,col=as.character(my.color))

虽然图形看起来不像ggplot2中那样好,但颜色是按照我想要的方式绘制的.

有没有明显的东西我缺少,或者这是否超出了ggplot2的范围?

plot r colors ggplot2

3
推荐指数
1
解决办法
1238
查看次数

为什么我收到 django Rest Framework swagger 的“没有名为 urls 的模块”错误?

从我的urls.py

urlpatterns = [
    ...,
    url(r'^docs/', include('rest_framework_swagger.urls')),
]
Run Code Online (Sandbox Code Playgroud)

我最近安装了django_rest_swagger,它包含在 中的 INSTALLED_APPS 中settings.py。但是,当我尝试运行服务器时,我得到一个ImportError

  File "/home/myname/myapp/api/urls.py", line 11, in <module>
    url(r'^docs/', include('rest_framework_swagger.urls')),
  File "/usr/local/lib/python2.7/dist-packages/django/conf/urls/__init__.py", line 52, \
in include
urlconf_module = import_module(urlconf_module)
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
__import__(name)
ImportError: No module named urls
Run Code Online (Sandbox Code Playgroud)

我正在使用自定义用户身份验证模型和令牌身份验证,这可能会也可能不会影响这一点(我也无法使用可浏览的 API)。

class UserProfile(AbstractUser):
    gender = models.CharField(max_length=1,default='')
    description = models.TextField(blank=True,default='')
Run Code Online (Sandbox Code Playgroud)

此外,当我尝试实现架构视图时,我收到了这个单独的错误:

视图.py

@api_view()
@renderer_classes([SwaggerUIRenderer, OpenAPIRenderer])
def schema_view(request):
    generator = schemas.SchemaGenerator(title='Test API')
    return Response(generator.get_schema(request=request))
Run Code Online (Sandbox Code Playgroud)

网址.py

urlpatterns= [ ..., url(r'schema-view/',schema_view), …

django python-import swagger django-rest-framework

3
推荐指数
1
解决办法
6191
查看次数

为什么 SELECT count(1) FROM c 每次在 CosmosDB 文档资源管理器中查询时都会更改值?

我有一个包含大约 600-700,000 个文档的数据库。当我在文档资源管理器中执行“SELECT value count(1) FROM c”时,它返回的值范围从 64,000 到 72,000,看起来是随机的。当我使用 Python SDK 执行此操作时,它会返回我上面提到的实际计数。为什么是这样?

azure azure-cosmosdb

3
推荐指数
1
解决办法
3026
查看次数

如何存储ggplots列表以在多时隙中使用而不覆盖以前的图?

我想使用从另一个函数创建的对象(cd下面的参数)在多时隙中绘制协方差/相关矩阵的一些热图.协方差矩阵存储在3维数组中,因此cd$covmat[,,i]调用第i个协方差矩阵.

最初我有一些问题与复制相同的情节.但是,我发现我遇到了环境问题.我已尝试解决这几种方法,下面的代码是最新的,但我无法弄清楚为什么它没有正确读取它.

这有什么特别的原因吗?我试过,包括和不包括环境参数(我希望不应该需要),我已经直接使用试过cd$covmat[,,i]aes()参数.

drawCovs<-function(cd,ncols){
    require(ggplot2)
    coords=expand.grid(x=1:cd$q,y=1:cd$q)
    climits = c(-1,1)*max(cd$covmat)
    cd$levels=c(cd$levels,"Total")
    covtext=ifelse(!(cd$use.cor),'Covariance','Correlation')
    plots=list()
    cmat=list()
    for (i in 1:(nlevels+1)){
        cmat[[i]]<-cd$covmat[,,i]
        .e<-environment
        plots[[i]]<-ggplot(environment=.e)+geom_tile(aes(x=coords$x,y=coords$y,
        fill=as.numeric(cmat[[i]]),color='white'))+
        scale_fill_gradient(covtext,low='darkblue',high='red',limits=climits)+ylab('')
        +xlab('')+guides(color='none')+scale_x_discrete(labels=cd$varnames,
        limits=1:cd$q, expand=c(0,0))+scale_y_discrete(labels=cd$varnames,
        limits=1:cd$q, expand=c(0,0))+theme(axis.text.x = element_text(angle = 90,
        hjust = 1))+labs(title=paste0(covtext,"s of data, ",cd$levels[i]))
    }

    multiplot(plotlist=plots,cols=ncols)
}
Run Code Online (Sandbox Code Playgroud)

arrays r list ggplot2

2
推荐指数
1
解决办法
4915
查看次数

为什么使用 fast_executemany=True 调用 cursor.executemany() 会导致分段错误?

我有一个 pydodbc 游标连接到 Azure SQL 数据库,其中安装了最新版本的 FreeTDS,在 Mac OS Sierra 10.12.6 上运行:

cursor.execute("CREATE TABLE test(a INT, b INT)")
cursor.commit()
Run Code Online (Sandbox Code Playgroud)

这行得通,那我试试

cursor.fast_executemany=True
cursor.execute("INSERT INTO test(a, b) VALUES(?,?)", [(1,2),(3,4),(5,6)])
Run Code Online (Sandbox Code Playgroud)

这导致分段错误,我看到的唯一错误消息是 segmentation fault: 11

如果我没有设置cursor.fast_executemany=True,那么代码工作得很好。

python pyodbc freetds segmentation-fault

2
推荐指数
1
解决办法
998
查看次数

Ubuntu 的 SDL2.0.2 安装中缺少对象

我在 Ubuntu 中安装了 SDL2,但我一直无法让它随附的示例程序运行。以下是出现的错误。

|In function ‘int main(int, char**)’:|
‘SDL_HWSURFACE’ was not declared in this scope|
‘SDL_DOUBLEBUF’ was not declared in this scope|
‘SDL_SetVideoMode’ was not declared in this scope|
‘SDL_Flip’ was not declared in this scope|
||=== Build finished: 4 errors, 0 warnings ===|
Run Code Online (Sandbox Code Playgroud)

这是我的标题(我添加了 SDL_image 以防出现一些问题,但它没有改变任何东西)。

#ifdef __cplusplus
    #include <cstdlib>
#else
    #include <stdlib.h>
#endif
#ifdef __APPLE__
#include <SDL/SDL.h>
#else
#include <SDL.h>
#endif
#ifdef _SDL_imageH
#include <SDL_image.h>
#endif
Run Code Online (Sandbox Code Playgroud)

以下是我包含在链接器设置中的库:

libSDL2.a
libSDL2main.a
libSDL2_image.a
libz.a
Run Code Online (Sandbox Code Playgroud)

我连续添加了这些库,但它们似乎都没有帮助我的程序运行。以下是其他链接器选项:

-lmingw32
-lSDL2main
-lSDL2
-mwindows
-lm …
Run Code Online (Sandbox Code Playgroud)

c++ ubuntu gcc sdl-2

1
推荐指数
1
解决办法
6919
查看次数

如何让 Shiny 在处理 UI 输入的更新之前等待一段时间?

我正在编写过滤器的应用程序,并在每次应用新过滤器时汇总数据。由于其中一个过滤器是一个具有相当大基数 (> 10,000) 的搜索框,并且由于源数据中的总行数很大(已经部分汇总),因此可能需要一段时间才能更新。我希望有一个缓冲期,应用程序等待用户输入结束,例如,在实际开始更新过程之前 1-2 秒。

这是一个简单的示例(没有高基数),如果您相对快速地连续切换不同的选项,您将看到几个中间图。N如果增加,效果会更强、更明显(也更烦人) 。这里的瓶颈很可能是图形生成与数据处理,但总体概念是相同的。

library(shiny)

ui <- fluidPage(
  titlePanel('Example Title'),
  sidebarLayout(
    sidebarPanel(
      checkboxGroupInput(
        'yFilterCheckbox',
        label='Filter Checkbox',
        choices = c('y<=-1','-1<y<1','y>=1'),
        selected = c('y<=-1','-1<y<1','y>=1'),
      ),
      checkboxGroupInput(
        'cat1FilterCheckbox',
        label='Category 1 Filter',
        choices=LETTERS[1:4],
        selected=LETTERS[1:4]
      ),
      checkboxGroupInput(
        'cat2FilterCheckbox',
        label='Category 2 Filter',
        choices=c('BIG','SMALL'),
        selected = c('BIG','SMALL')
      )
    ),
    mainPanel(
      plotOutput('myPlot')
    )
  )
)

server <- function(input, output){
  library(tidyverse)
  set.seed(2021*12*21)
  N=200000
  mydata = data.frame(
    x1 = rnorm(N),
    x2 = rnorm(N),
    x3 = rnorm(N),
    c1 = sample(LETTERS[1:4], N, replace=T),
    c2 = …
Run Code Online (Sandbox Code Playgroud)

user-input r shiny

1
推荐指数
1
解决办法
998
查看次数

选择具有特定ID值的数据行的最快方法是什么?

现在我正在使用分析一些数据

row = dataset[dataset$id == id1,]
Run Code Online (Sandbox Code Playgroud)

row = subset(dataset,id == id1)
Run Code Online (Sandbox Code Playgroud)

其中所有id值都是整数.

但是,在使用更大的数据集时,我的结果令人失望.有什么方法可以加快这项具体任务吗?

optimization r dataframe

0
推荐指数
1
解决办法
66
查看次数