Форма модели Django с помощью форм. ModelMultipleChoiceField

У меня есть ModelForm в моем приложении Django, которое использует формы. ModelMultipleChoiceField, который отображается как формы. Виджет CheckboxSelectMultiple на форме. Этот ModelForm привык к значениям select/de-select для many-many отношения. Вот проблема: когда Вы сняли флажок со всеми флажками и сохраняете форму, она не сохраняет. При снятии выделения со всеми кроме 1 это действительно сохраняет правильно.

Есть ли какие-либо приемы, которые я пропускаю здесь об образцовых формах и many-many отношениях? Я встречаюсь с ошибкой? Я плохо знаком с Django.Заранее спасибо.

Пользовательское поле:

class NetworkMessageChoiceField(forms.ModelMultipleChoiceField):
    def label_from_instance(self, obj):
        return obj.display_message    

Образцовая форма:

class MessageTemplateForm(forms.ModelForm):
    network_messages = NetworkMessageChoiceField(queryset=NetworkMessageTemplate.objects, 
                                             widget=forms.CheckboxSelectMultiple())        
    class Meta:
        model = UserProfile
        fields = ('network_messages',)

Представление, которое сохраняет форму:

def save_message_templates(request, extra_context=dict()):
    try:
        profile_obj = request.user.get_profile()
    except ObjectDoesNotExist:
        profile_obj = UserProfile(user=request.user)

    if request.method == 'POST':
        form = MessageTemplateForm(request.POST, instance=profile_obj)
        if form.is_valid():
            form.save()
            return redirect('/')

    return index(request, message_template_form=form)

Править:

Мое поле формы пропускало Required=False.

class MessageTemplateForm(forms.ModelForm):
    network_messages = NetworkMessageChoiceField(queryset=NetworkMessageTemplate.objects, 
                                                 widget=forms.CheckboxSelectMultiple(),
                                                 required=False)        
    class Meta:
        model = UserProfile
        fields = ('network_messages',)
6
задан Coral Doe 24 October 2012 в 05:25
поделиться

1 ответ

Вы не вставили то, как выглядит ваша модель, поэтому я предполагаю, что поле network_messages в вашей модели является обязательным. В этом случае, когда вы пытаетесь отправить форму со значением этого поля как NULL (пусто), тогда form.is_valid () не возвращает Истина , и поэтому ваша form.save () никогда не выполняется.

Вы пытались выполнить это из интерактивной оболочки, создать экземпляр формы и попытаться вручную save () это?

0
ответ дан 18 December 2019 в 04:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: