0

我希望能够在我的表单中为我的模型在 django admin 中使用 ModelChoiceField。但是,当我自定义和添加时,默认小部件 Select 可以工作

class GalleryModelForm(forms.ModelForm):
    image = forms.ModelChoiceField(queryset=models.Photo.objects.all(),
                                   widget=forms.SelectMultiple, empty_label=None)
    class Meta:
        model = models.Gallery

我明白了

int() argument must be a string or a number, not 'list'

从追溯:

/app/.heroku/python/lib/python2.7/site-packages/django/db/models/fields/__init__.py in get_prep_value

 def get_prep_value(self, value):
    if value is None:
        return None
    return int(value)

有没有办法将字符串或数字传递给get_prep_value或覆盖它?

4

1 回答 1

2

您应该使用ModelMultipleChoiceField类,而不是使用 ModelChoiceField 来设置我认为的 SelectMultiple 小部件。

因此,它将为您提供以下信息:

class GalleryModelForm(forms.ModelForm):
    image = forms.ModelMultipleChoiceField(queryset=models.Photo.objects.all(), empty_label=None)
    class Meta:
        model = models.Gallery

然后,请注意表单是否为空,Django 1.5 将返回一个空查询集,而旧版本将返回一个空列表(丑陋)。

于 2013-04-16T09:24:49.620 回答