django admin发出警告“字段'X'没有默认值”

时间:2011-01-02 09:27:46

标签: django django-admin autofield

我已经从现有的遗留数据库中创建了两个模型,一个用于文章,另一个用于可以与文章关联的标记:

class Article(models.Model):
    article_id = models.AutoField(primary_key=True)
    text = models.CharField(max_length=400)
    class Meta:
        db_table = u'articles'
class Tag(models.Model):
    tag_id = models.AutoField(primary_key=True)
    tag = models.CharField(max_length=20)
    article=models.ForeignKey(Article)
    class Meta:
        db_table = u'article_tags'

我想从管理界面为文章添加标签,因此我的admin.py文件如下所示:

from models import Article,Tag
from django.contrib import admin
class TagInline(admin.StackedInline):
    model = Tag


class ArticleAdmin(admin.ModelAdmin):

    inlines = [TagInline]

admin.site.register(Article,ArticleAdmin)

界面看起来不错,但是当我尝试保存时,我得到: Warning at /admin/webserver/article/382/ Field 'tag_id' doesn't have a default value

3 个答案:

答案 0 :(得分:4)

如果数据库中有一个不允许NULL的废弃字段,也会发生这种情况。

答案 1 :(得分:2)

问题是在DB中,tag_id未设置为自动增量字段。

答案 2 :(得分:0)

在我看来,解决此问题的方法是禁用默认情况下启用的STRICT_TRANS_TABLES SQL模式。