Вопрос о ModelMultipleChoiceField - PullRequest
       1

Вопрос о ModelMultipleChoiceField

0 голосов
/ 12 сентября 2011

Так получилось, что мне пришлось использовать массивы 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 имеет значение, которое соответствует только последнему идентификаторувыбранная группа.Вместо массива, как я ожидаю.

Ответы [ 2 ]

1 голос
/ 12 сентября 2011

Не может помочь без правильной ошибки / трассировки.

Для вашей обновленной точки помните, что вам нужно сделать request.POST.getlist(fieldname), если вы ожидаете несколько значений.

0 голосов
/ 17 октября 2018

Итак, сначала нам нужно отделить тонкие:

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,
))

сделайте это и опубликуйте свою ошибку трассировки, без логов или описания ошибки трудно помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...