我在Django admin中遇到了一個非常奇怪的行爲。我有這樣的模型定義:Django Admin DataError:值太長,類型字符變化(150)
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
不過,我得到了來自例外以下Django管理員,當我嘗試編輯title
字段。我做了150個字符,這是輸入字段根據WebPublicationAdmin
(這是預期的)的定義所允許的最大值。
DataError: value too long for type character varying(150)
請注意錯誤消息如何不反映模型的當前狀態。 (我跑了一次遷移並且成功了,因爲PostgreSQL是這麼說的。)
這裏有什麼可能是錯誤的?
這並不是我所害怕的。 – romeroqj