在My view
中调用save()
后,我的model
不会更新。调查了几个地方(here,here)并没有为我的案例找到任何答案。我的model
包含ManyToManyField
:
型号:
class Event(models.Model):
name = models.CharField(max_length=120)
date = models.DateTimeField(auto_now=False, auto_now_add=False)
attendees = models.ManyToManyField(Employee)
approval = models.ForeignKey(EventStatus, default=2)
def __unicode__(self):
return self.name
def approve_url(self):
return reverse("RGAU:EventApprove", kwargs={"id": self.id})
视图:
^{pr2}$目标是在网页上按下按钮时将Event
实例更新为“Approved”(因此视图EventApprove
)。在
假定instance.approval.id
分配正确的审批状态id
,但保存未提交。在
我做错什么了?在
你可以用两种不同的方法。如果只有要关联的相关对象的pk(id)值,请使用fieldname
_id
语法,如下所示:如果您手头有一个关系实例,您可以只指定它:
^{pr2}$不管怎样,你的实例.批准现在将与id=3的EventStatus关联。在
进一步解释:}的关联实例。如果您使用
instance.approval
是instance
的属性,它包含{instance.approval.id
进一步深入研究,那么您现在正在接触EventStatus实例并更改其id
,这是您不想做的。在instance.approval_id
是一个小魔术,Django允许您直接设置将两个模型关联起来的数据库列值。。不需要从数据库中实际获取EventStatus的实例,以便能够将它与事件关联起来。在这种情况下,当您使用已知的引用id值时,它是非常方便的。但即便如此,最好在某处定义它们,例如:然后,您可以使用
instance.approval_id = 3
,而不是使用instance.approval_id = EventStatus.APPROVED
,这一点以后更容易理解。在相关问题 更多 >
编程相关推荐