【发布时间】:2015-06-29 11:08:03
【问题描述】:
我在 Django 管理中遇到了一个非常奇怪的行为。我有这个模型定义:
class WebPublication(DatesInfo):
title = models.CharField(max_length=200)
class Meta:
abstract = True
class WebArticle(MsnPublication):
pass
以及下面的表格和管理员代码:
class WebArticleForm(forms.ModelForm):
title = forms.CharField(max_length=150)
class WebPublicationAdmin(admin.ModelAdmin):
def some_method(self, obj):
return 'Hello!'
class WebArticleAdmin(WebPublicationAdmin):
form = MsnArticleForm
list_display = ('title', 'author', 'pub_date', 'preview_link')
admin.site.register(MsnArticle, MsnArticleAdmin)
这是非常标准的,这就是为什么我说我觉得这很奇怪并尝试提供尽可能多的细节。
如你所见,WebPublication有一个varchar,最大长度为200,可以在表描述中确认(顺便说一下PostgreSQL):
Column | Type | Modifiers
-------------------+--------------------------+-------------------
title | character varying(200) | not null
但是,当我尝试编辑 title 字段时,我从 Django 管理员那里得到以下异常。我将其设置为 150 个字符,这是根据 WebPublicationAdmin 的定义输入字段允许的最大值(这是预期的)。
DataError: value too long for type character varying(150)
请注意错误消息如何不反映模型的当前状态。 (我运行了一个迁移,它是成功的,因为 PostgreSQL 是这么说的。)
这里可能有什么问题?
【问题讨论】:
标签: django postgresql django-models django-forms django-admin