我正在创建一个 Django 模型,其中:
expirationTimeStamp 字段的默认值基于 creationTimeStamp
isLive 布尔字段值基于 expireTimeStamp
我编写了以下函数 expirationTimeCalculation 和 postLiveStatus 并将它们指定为字段的默认值,但出现错误。我也尝试通过属性(函数)分配给各个字段,但仍然出现错误。
我需要实现的功能之一是用户也可以发送自定义 expireTimeStamp 来覆盖默认值,因此,我认为属性(函数)分配对于 expireTimeStamp 字段并不理想。
有没有其他方法可以根据creationTimeStamp 字段设置expirationTimeStamp 字段值?
感谢任何反馈!
class Posts(models.Model):
def expirationTimeCalculation(self):
EXPIRATION_DURATION = 86400 #time in seconds
expirationTime = self.creationTimestamp + timedelta(seconds = EXPIRATION_DURATION)
return expirationTime
def postLiveStatus(self):
return (self.expirationTimestamp > timezone.now)
message = models.TextField()
creationTimestamp = models.DateTimeField(default=timezone.now)
expirationTimestamp = models.DateTimeField(default=expirationTimeCalculation)
isLive = models.BooleanField(default=postLiveStatus)
答案 0 :(得分:0)
类似的回答问题。我附上了官方文档以及回答问题的链接。
模特当然也有“自我”!只是您试图将模型类的属性定义为依赖于模型实例;这是不可能的,因为在您定义类及其属性之前,实例不(也不能)存在。
要获得您想要的效果,请覆盖模型类的 save() 方法。对实例进行必要的更改,然后调用超类的方法进行实际保存。这是一个简单的例子。
def save(self, *args, **kwargs):
if not self.subject_init:
self.subject_init = self.subject_initials()
super(Subject, self).save(*args, **kwargs)