Reg*_*ser 76 django django-models django-views django-database
我有一个模特
class Survey(models.Model):
created_by = models.ForeignKey(User)
question = models.CharField(max_length=150)
active = models.NullBooleanField()
def __unicode__(self):
return self.question
Run Code Online (Sandbox Code Playgroud)
现在我想只更新active
字段.所以我这样做:
survey = get_object_or_404(Survey, created_by=request.user, pk=question_id)
survey.active = True
survey.save(["active"])
Run Code Online (Sandbox Code Playgroud)
现在我收到一个错误IntegrityError: PRIMARY KEY must be unique
.
我是否正确使用此方法进行更新?
Ala*_*air 146
要更新字段子集,您可以使用update_fields
:
survey.save(update_fields=["active"])
Run Code Online (Sandbox Code Playgroud)
这个update_fields
论点是在Django 1.5中添加的.在早期版本中,您可以使用该update()
方法:
Survey.objects.filter(pk=survey.pk).update(active=True)
Run Code Online (Sandbox Code Playgroud)
pem*_*ahl 15
通常,更新一个或多个模型实例中的某些字段的正确方法是update()
在相应的查询集上使用该方法.然后你做这样的事情:
affected_surveys = Survey.objects.filter(
# restrict your queryset by whatever fits you
# ...
).update(active=True)
Run Code Online (Sandbox Code Playgroud)
这样,您就不需要再调用save()
模型了,因为它会自动保存.此外,该update()
方法还返回受更新影响的调查实例数.
归档时间: |
|
查看次数: |
78239 次 |
最近记录: |