我有Django版本1.4.5
以下是我的模型的相关部分
class Product (models.Model):
name=models.CharField(max_length=200)
description=models.TextField()
label=models.ForeignKey('Label')
pub_date = models.DateTimeField(editable=False)
def save(self):
#item will not have id if this is the first save
if not self.id:
self.pub_date = datetime.date.today()
super(Product, self).save()
def __unicode__(self):
return self.name
class Label(models.Model):
"""
A clothing label, e.g. Kate Spade
"""
name=models.CharField(max_length=100)
def __unicode__(self):
return self.name
当我尝试发布产品时,选择标签可以正常工作。发布项目按预期工作,并且在管理控制台中返回到产品后,标签字段仍会填充。但是,如果我尝试更改标签字段的值,我将进入产品页面的默认列表,消息“他的产品”Prod 1“已成功更改”但返回到Prod 1页面显示该字段实际上没有妥善保存。
这里有什么想法吗?
答案 0 :(得分:1)
super(Product, self).save()
位于if
块内,因此在编辑时不会调用它。另外,为什么不在pub_date
字段上使用auto_now_add
?
答案 1 :(得分:1)
在您的情况下,无需设置日期&时间明确。您可以使用“auto_now_add
”。请点击此链接了解详情。
https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.DateField.auto_now_add
class Product (models.Model):
name=models.CharField(max_length=200)
description=models.TextField()
label=models.ForeignKey('Label')
pub_date = models.DateTimeField(editable=False, auto_now_add = True)
def __unicode__(self):
return self.name
如果您需要手动设置,请使用以下代码段。它也称超级变革。
def save(self):
#item will not have id if this is the first save
if not self.id:
self.pub_date = datetime.date.today()
super(Product, self).save()