我的模特:
class Annonce(models.Model):
created_at = models.DateTimeField(editable=False)
modified_at = models.DateTimeField()
title = models.CharField(max_length=24)
domaines = models.ManyToManyField(Domaine, null=True,related_name="%(app_label)s_%(class)s_related")
我的表格:
class annonceForm(forms.ModelForm) :
class Meta :
model = Annonce
fields = ['title','domaines','presentation']
widgets = {
'domaines': forms.Select(attrs={'size': 1}),
}
def __init__(self, *args, **kwargs):
super(annonceForm, self).__init__(*args, **kwargs)
self.fields['domaines'].required = False
self.fields['domaines'].queryset = Domaine.objects.all().values_list("nom",flat=True)
当我想以我的形式annonceForm保存一个Annonce时,我有这样的错误消息:
"输入值列表"在Select of" domaines"
之下
答案 0 :(得分:0)
对于M2M关系,您应该在表单类中使用MultipleChoiceField它的小部件SelectMultiple:
https://docs.djangoproject.com/en/1.7/ref/forms/fields/#multiplechoicefield
当您的表单发送单个值时,Django需要一个值列表或M2M关系的空列表。 想想单选字段如何显示现有Annonce的多个值,它不能。
答案 1 :(得分:0)
域为ManyToManyField,适合您需要的表单小部件将是form.SelectMultiple
category = forms.ModelMultipleChoiceField(
queryset=ProductCategory.objects.filter(is_published=True),
widget=forms.SelectMultiple(attrs={'multiple': ''}),)