2012-08-02 42 views
1

我正在使用jquery選擇。我在ManyToManyForeignKey上添加了null=Trueblank=True。但爲什麼我在模板中獲得ManyToManyField驗證錯誤?我試圖提交表單,但未在管理員中填寫ManyToManyField和ForeignKey,但它的工作原理不在tempalte中。你能幫忙嗎?感謝ManyToManyField驗證錯誤

ManyToManyError - Enter a list of values.

型號

class Movie(models.Model): 
    title = models.CharField(max_length=100) 
    slug = models.SlugField(unique=True, max_length=100) 
    director = models.ManyToManyField(Director, null=True, blank=True) 
    writer = models.ManyToManyField(Writer, null=True, blank=True) 
    producer = models.ManyToManyField(Producer, null=True, blank=True) 
    starring = models.ManyToManyField(Starring, null=True, blank=True) 
    screenplay = models.ManyToManyField(Screenplay, null=True, blank=True) 

    editing = models.ForeignKey(Editing, null=True, blank=True) 
    music = models.ForeignKey(Music, null=True, blank=True) 
    studio = models.ForeignKey(Studio, null=True, blank=True) 
    image = models.CharField(max_length=200, null=True, blank=True) 

MovieForm

class MovieForm(ModelForm): 

    class Meta: 
    model = Movie 
    exclude = ('slug', 'image') 
    widgets = { 
     'director': Select(attrs={'multiple class': 'chzn-select'}), 
     'starring': Select(attrs={'multiple class': 'chzn-select'}), 
     'producer': Select(attrs={'class': 'chzn-select'}), 
     'writer': Select(attrs={'class': 'chzn-select'}), 
     'studio': Select(attrs={'class': 'chzn-select'}), 
     'editing': Select(attrs={'class': 'chzn-select'}), 
     'screenplay': Select(attrs={'class': 'chzn-select'}), 
     'music': Select(attrs={'class': 'chzn-select'}), 
    } 

回答

1

錯誤消息 「輸入值的列表」 意味着從形式返回的值是不是一個實例列表或元組,我認爲問題是你使用Select小部件,它返回一個值(''如果爲空),也許你應該使用SelectMultiple

class MovieForm(ModelForm): 
    class Meta: 
     model = Movie 
     exclude = ('slug', 'image') 
     widgets = { 
      'director': SelectMultiple(attrs={'class': 'chzn-select'}), 
      ... 
     } 

或者你也可以手動轉換形式乾淨前列出/元組的值。

+0

-1沒有足夠的jQuery。 – 2012-08-02 10:02:42