2011-01-02 7 views
4

Ich habe DB, ein für Artikel und ein für Tags aus einer bestehenden Legacy zwei Modelle erstellt, die man mit Artikel zuordnen kann:django Admin gibt „Feld‚X‘hat keinen Standardwert“ Warnung

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' 

ich möchte für einen Artikel aus dem Admin-Interface Hinzufügen von Tags ermöglichen, so meine admin.py Datei wie folgt aussieht:

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) 

die Schnittstelle sieht gut aus, aber wenn ich zu retten versuchen, erhalte ich: Warning at /admin/webserver/article/382/ Field 'tag_id' doesn't have a default value

+0

Warum verwenden Sie 'AutoFields' für Felder' model_id', werden diese automatisch erstellt und von django als Primärschlüssel festgelegt. – crodjer

+0

@dcrodjer - Ich verwende eine Legacy-DB – olamundo

+1

Haben Sie eine Modell-/Datenbanktabelle geändert (nachdem die db synchronisiert wurde) und nicht synchronisiert? Schau [hier] (http://manydemons.com/blog/2010/10/field-id-doesnt-have-a-default-value-django-python/) – crodjer

Antwort

2

Das Problem war, dass in der DB tag_id nicht als Autoincrement-Feld festgelegt wurde.

3

Dies kann auch passieren, wenn Sie ein nicht mehr verwendetes Feld in Ihrer Datenbank haben, das NULL nicht erlaubt.

Verwandte Themen