首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何向Django Queryset添加额外的字段

如何向Django Queryset添加额外的字段
EN

Stack Overflow用户
提问于 2018-07-25 13:02:08
回答 2查看 6.2K关注 0票数 2

我想在我的查询集中添加一些额外的字段。

models.py

代码语言:javascript
复制
class Company(models.Model):
    ENTITY_CHOICES  = ( ('CO', 'Corporation'),('PR','Proprietor'),('PA','Partnership'),('NO','Nonprofit'))
    legal_name      = models.CharField(max_length=120, blank=True)
    entity          = models.CharField(max_length=1, null=True, choices=ENTITY_CHOICES, default='CO')
    client          = models.ForeignKey(Clients, models.SET_NULL, blank=True, null=True) 

views.py

代码语言:javascript
复制
qs = Company.objects.filter(entity=PA)
for q in qs:
    q.due_date = '06/15'
for q in qs:
    print('due_date',q.due_date)

它在很多时候都是成功的。但是结果并不稳定,我碰巧看到了如下错误,

代码语言:javascript
复制
Exception Type: AttributeError
Exception Value:    
'Companies' object has no attribute 'due_date'

有没有更好的方法向querysets添加额外的属性?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-26 07:58:07

当您迭代一个查询集两次时,您基本上是在第二次查询数据库,在第一次循环中丢失了您的更改。您可以使用list()关键字强制计算查询集,例如

代码语言:javascript
复制
qs = list(Company.objects.filter(entity=PA))
票数 0
EN

Stack Overflow用户

发布于 2018-07-25 13:11:48

您必须在模型中添加一些字段。

在代码中,向模型实例添加一些属性,如下所示:

代码语言:javascript
复制
q.due_date = '06/16'

此属性已添加到实例中,并且没有存储位置。因此,当您从数据库实例中获取实例时,实例没有名为due_date字段/属性

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51511117

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档