我有一个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在我的代码库中的其他模型中有效。 我尝试注释掉自定义保存方法,看它是否导致问题,但显然不是。我知道已经有其他解决方案可以解决这个问题,但我很好奇是什么导致了这种不一致。
答案 0 :(得分:0)
我没有足够的声誉来发表评论;尽管很晚,其他人可能会觉得它很有帮助。这可能是解决您问题的可能方法。
要检查对象是否是新记录,有一个简单的方法,包括检查其主键是否已设置。此方法仅适用于自动主键,如果您已覆盖模型定义并使用其他字段作为主键,则此操作无效,您必须找到自己检查对象是否为新的方法。 / p>