小编rsp*_*rsp的帖子

从查询集中获取唯一的多对多记录列表

我的模特:

class Order(models.Model):
    ordered_by = models.ForeignKey(User)
    reasons = models.ManyToManyField(Reason)
class Reason(models.Model):
    description = models.CharField()
Run Code Online (Sandbox Code Playgroud)

基本上,用户创建订单并给出该订单的原因.也就是说,约翰有两个订单(一个用于铅笔,因为他不在,因为他不喜欢他现在的股票.因为他已经出局所以第二笔订购钢笔).

我想打印出用户下订单的所有原因列表.所以在约翰之下,它应该打印出"他出去了","他不喜欢他现在的股票"; 那两条线.如果我只是简单地选择约翰的所有命令,重复它们并打印出他们的"理由"它将打印出"他已经出局","他不喜欢他现在的股票"然后"他又出局"了.我不想要这些重复的值.

如何选择所有订单的原因列表,以便列表包含所有唯一行?

django django-templates django-models

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

如何使用请求数据在基于Django类的通用createview上设置初始数据

我在我的模型中使用了Django的通用createview

from myproject.app.forms import PersonForm
class PersonMixin(object):
    model = Person
    form_class = PersontForm

class PersonCreateView(PersonMixin, CreateView):
    pass
Run Code Online (Sandbox Code Playgroud)

这非常适合用我的自定义表单显示Person的创建视图.但是,我有一个字段,我希望预先填充一个值.我找到了这个答案:在基于类的通用视图中将初始值设置为modelform

但是,我预先填充的值来自request.user的配置文件.如何在PersonCreateView中访问请求并将其传递给表单?

django django-forms django-generic-views django-class-based-views

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

使用跨越关系的字段查找对django模型进行链过滤和排除

我有以下型号:

class Order_type(models.Model):
    description = models.CharField()

class Order(models.Model):
    type= models.ForeignKey(Order_type)
    order_date = models.DateField(default=datetime.date.today)
    status = models.CharField()
    processed_time= models.TimeField()
Run Code Online (Sandbox Code Playgroud)

我想要一个包含符合此条件的订单的订单类型列表:(order_date<=今天AND processed_time是空的status并且不是空白的)

我试过了:

qs = Order_type.objects.filter(order__order_date__lte=datetime.date.today(),\
     order__processed_time__isnull=True).exclude(order__status='')
Run Code Online (Sandbox Code Playgroud)

这适用于原始订单列表:

orders_qs = Order.objects.filter(order_date__lte=datetime.date.today(), processed_time__isnull=True)
orders_qs = orders_qs.exclude(status='')
Run Code Online (Sandbox Code Playgroud)

但是qs不是正确的查询集.我认为它实际上返回了一个更窄的过滤器(因为没有记录)但我不确定是什么.根据这个(django参考),因为我引用了一个相关的模型,我认为排除适用于原始查询集(不是过滤器中的那个),但我不知道如何.

好吧,我只是想到了这一点,我认为这很有效,但感觉很草率(有更好的方法吗?):

qs = Order_type.objects.filter(order__id__in=[o.id for o in orders_qs])
Run Code Online (Sandbox Code Playgroud)

django django-models django-queryset django-views

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

如何将fields参数传递给google驱动器python API调用

我有:

results = drive_service.files().list(**body).execute()
Run Code Online (Sandbox Code Playgroud)

哪里:

body = {
    'q': query_string,
    'maxResults': 1,
}
Run Code Online (Sandbox Code Playgroud)

为了提高性能,我想限制返回的字段,如下所述:https://developers.google.com/drive/performance#partial-response

如果我只是添加'fields': 'id,items,title,mimeType'body我得到一个错误.我不确定如何添加限制?

有点相关,python api会自动gzip请求吗?

python google-drive-api

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

如何计算Django模板中的时差

我有一个带有两个TimeFields的模型.我想在模板中显示时差(即27分钟).我看到了过滤器的时间,但它不起作用; 我认为它只接受日期时间,但我的模型只存储时间.

对@HAL的回应:

'datetime.time' object has no attribute 'year'
Exception Location: C:\Python27\lib\site-packages\django\utils\timesince.py in timesince, line 32
Run Code Online (Sandbox Code Playgroud)

django django-templates django-filter

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