[英]Creating a callable function to generate a value for an attribute in django models
[英]Django model attribute value evaluation in callable
为什么在这两个属性upload
模式, time
评估我每次添加一个新的实例,但string
没有改变呢? ( inUnixTime
给我当前的日期时间为Unix时间)
class upload(models.Model):
#...
time = models.IntegerField(default=inUnixTime)
string = models.CharField(max_length=255, default=str(inUnixTime()))
#...
def inUnixTime(t=None):
if not t:
t = datetime.datetime.now()
return int(time.mktime(t.timetuple()))
PS。 如果我只使用可通话对象,
string = models.CharField(max_length=255, default=str(inUnixTime))
然后我得到对象的内存地址,而不是字符串的unix时间。
先感谢您 !
str(inUnixTime())
返回一个字符串,就像u'A string'
-它不是可调用的,因此不会改变。 当您使用inUnixTime
函数作为默认函数时,它是可调用的,因此每次都会被调用。
您可能想要的是:
def string_default():
return str(inUnixTime())
接着:
string = models.CharField(max_length=255, default=string_default)
答案是将@Greg的答案和https://docs.djangoproject.com/en/dev/ref/models/fields/#default将lambda包装在可调用项中结合使用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.