我的模特:
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的通用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
我有以下型号:
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) 我有:
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请求吗?
我有一个带有两个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)