Django auto_now和auto_now添加不起作用,保存无

时间:2016-03-09 05:44:11

标签: python django

我有一个django模型DateTimeField,auto_now = True,auto_now_add = True,用于创建和更新。保存模型时,两个字段都保存为无。有人知道是什么导致了这个吗?

模特:

class Referral(models.Model):
    ..
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    ..

它有自定义保存方法:

def save(self, *args, **kwargs):
        #TODO: fix the created and updated field that is not working now
        if not self.id:
            code_settled = False
            while not code_settled:
                referral_code = self._generate_referral_code()
                try:
                    r = Referral.objects.get(referral_code=referral_code)
                except:
                    self.referral_code = referral_code
                    code_settled = True

            self.expiry_date = self.reward_program.expiry_date
            if self.referrer.user.profile.cellphone_verified:
                self.referrer_reward_status = 'F'
            else:
                self.referrer_reward_status = 'C'

            if self.referee.profile.cellphone_verified:
                self.referee_reward_status = 'F'
            else:
                self.referee_reward_status = 'C'
        else:
            self._referral_code = self.referral_code

        super(Referral, self).save(*args, **kwargs)

我如何创建推荐:

referral = Referral(referrer=referrer, referee=user, reward_program=self, _referral_code='stub')
referral.save()

auto_now在我的代码库中的其他模型中有效。 我尝试注释掉自定义保存方法,看它是否导致问题,但显然不是。我知道已经有其他解决方案可以解决这个问题,但我很好奇是什么导致了这种不一致。

1 个答案:

答案 0 :(得分:0)

我没有足够的声誉来发表评论;尽管很晚,其他人可能会觉得它很有帮助。这可能是解决您问题的可能方法。

  

要检查对象是否是新记录,有一个简单的方法,包括检查其主键是否已设置。此方法仅适用于自动主键,如果您已覆盖模型定义并使用其他字段作为主键,则此操作无效,您必须找到自己检查对象是否为新的方法。 / p>