我的模型是一个工作申请,有3个州。
接受:明确接受
拒绝:明确拒绝了
待定:既未明确接受也未拒绝
我为我的模型定义accepted
和rejected
字段是有道理的,所以我可以明确地设置它们。但是pending
属性是根据其他两个来调节的...所以为它设置属性没有意义。
我可以为它编写一个方法,比如job.pending()
,它返回一个只有( not accepted ) and (not rejected)
的布尔值。但有没有办法在不编写方法的情况下执行job.pending
?
好奇......
答案 0 :(得分:2)
您可以覆盖save()
方法来执行此类操作,以便每次更改作业模型时重新计算待处理的内容。虽然我同意这一点,pending()
方法也不错。
class Job(models.Model):
accepted = ...
reject = ...
pending = ... (Boolean Fields)
def save(self, *args, **kwargs):
self.pending = (not self.accepted) and (not self.rejected)
super(Job, self).save(*args, **kwargs) # Call the "real" save() method.
https://docs.djangoproject.com/en/dev/topics/db/models/#overriding-predefined-model-methods