2012-08-02 98 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