【发布时间】:2017-05-23 14:27:49
【问题描述】:
我正在尝试为我的模型 Account 创建一个时间戳,但我不希望我的两个时间戳(created_at 和 modified_at)可以被用户编辑甚至查看。在我将editable=False 添加到created_at 和modified_at 字段之前,一切都正常工作。这是我的模型:
class Account(models.Model):
account_name = models.CharField(max_length=25)
active = models.BooleanField(default=True)
created_at = models.DateTimeField(null=True, blank=True, editable=False)
modified_at = models.DateTimeField(null=True, blank=True, editable=False)
def save(self):
if self.id:
self.modified_at = datetime.datetime.now()
else:
self.created_at = datetime.datetime.now()
super(Account, self).save()
class Meta:
ordering = ('id',)
这是我尝试做任何事情(迁移、运行服务器等)时遇到的模糊错误:
django.core.exception.FieldError: Unknown field(s) (created_at, modified_at) specified for Account
我从两个字段中删除 editable=False 后,一切正常。这是一个 Django 错误吗?有没有更好的方法让用户无法查看和编辑该字段?
我正在使用 Django 1.9 和 Python 3.6.1。感谢您的帮助,如果您需要我发布其他任何内容(视图、序列化程序等),请告诉我。
编辑
完整回溯:https://pastebin.com/YEQACX5z
账户表格:
class AccountForm(ModelForm):
class Meta:
model = Account
fields = ['account_name', 'active', 'created_at', 'modified_at']
【问题讨论】:
-
请显示完整的回溯。
-
添加了完整的回溯。
-
回溯显示错误发生在您的
AccountForm中,您没有显示。 -
嗯,好的,我也添加了我的 AccountForm。
-
Django 不允许您在模型表单中包含带有
editable=False的字段。您应该删除editable=False或从模型表单中删除它们。
标签: python django python-3.x django-models django-forms