我想在我的查询集中添加一些额外的字段。
models.py
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
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)
它在很多时候都是成功的。但是结果并不稳定,我碰巧看到了如下错误,
Exception Type: AttributeError
Exception Value:
'Companies' object has no attribute 'due_date'
有没有更好的方法向querysets添加额外的属性?
发布于 2018-07-26 07:58:07
当您迭代一个查询集两次时,您基本上是在第二次查询数据库,在第一次循环中丢失了您的更改。您可以使用list()
关键字强制计算查询集,例如
qs = list(Company.objects.filter(entity=PA))
发布于 2018-07-25 13:11:48
您必须在模型中添加一些字段。
在代码中,向模型实例添加一些属性,如下所示:
q.due_date = '06/16'
此属性已添加到实例中,并且没有存储位置。因此,当您从数据库实例中获取实例时,实例没有名为due_date字段/属性
https://stackoverflow.com/questions/51511117
复制相似问题