关于ModelMultipleChoiceField的问题

时间:2011-09-12 08:19:22

标签: python django postgresql

碰巧我必须使用PostgreSQL数组。在Django模型中没有对数组的本机支持,所以我使用了django_arrayfields。但是为了在管理员中显示我应该用于字段hoprizontal_filter IntegerArrayField。

models.py

class Group(models.Model): 
    name = models.TextField()

class User(models.Model):
    name = models.TextField()
    groups = IntegerArrayField()

admin.py

class GroupAdminForm(forms.ModelForm):
    groups = forms.ModelMultipleChoiceField(
    queryset=Group.objects.all(), 
    label=('Select groups'),
    required=True,
    widget=FilteredSelectMultiple(
        ('groups'),
        False,
))

class UserAdmin(admin.ModelAdmin):
    fields = ('groups',)
    form = GroupAdminForm

由于此小部件显示并正常工作。但是,保持写入不能适应类型'QuerySet'。

请帮助!!!

UPD: 在字段中请求信息POST变量组具有的值仅对应于所选组的最后一个ID。而不是我期望的数组。

2 个答案:

答案 0 :(得分:1)

没有正确的错误/追溯就无法帮助。

对于您的更新点,请记住,如果您期望多个值,则需要执行request.POST.getlist(fieldname)

答案 1 :(得分:0)

因此,首先我们需要分离薄片:

admin.py

 from .forms import GroupAdminForm
class UserAdmin(admin.ModelAdmin):
    fields = ('groups',)
    form = GroupAdminForm

forms.py

class GroupAdminForm(forms.ModelForm):
    groups = forms.ModelMultipleChoiceField(
    queryset=Group.objects.all(), 
    label=('Select groups'),
    required=True,
    widget=FilteredSelectMultiple(
        ('groups'),
        False,
))

执行此操作并发布跟踪错误,如果没有日志或错误描述,很难提供帮助。