用Djang保存到数据库

2024-10-03 17:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试为这个问题找到某种规范引用,其中我使用了以下类型模型:

class MyPreferencesForm(forms.Form):
    MyGenderPref = forms.MultipleChoiceField(choices=GENDER_CHOICES, widget=forms.CheckboxSelectMultiple())

那景色呢

def GoPreferences(request):
    if request.method == "POST":
        f = MyPreferencesForm(request.POST)
        if f.is_valid():
            model_instance = f.save(commit=False)
            model_instance.save()
            f.save_m2m()
            return redirect('/')
    else:
        f = MyPreferencesForm()

    return render(request, "mypreferences.html", {'form': f})

然而,我试图遵循我认为是明智的,包括多对多。但我还是做不到。我的错误如下:

Exception Type: AttributeError
Exception Value:    
'MyPreferencesForm' object has no attribute 'save'

错误来自包含model_instance = f.save(commit=False)的行


Tags: instance规范false类型modelreturnifrequest
2条回答

如果你的m2m桌子型号.py使用through然后您需要使用手动管理保存对象.创建不能使用save\u m2m()或save()

save仅适用于从ModelForm对象继承的窗体。在这里,您继承了forms.Form形式,因此出现了错误。你知道吗

forms.ModelForm继承表单并指定Meta属性

class MyPreferencesForm(forms.ModelForm):
    MyGenderPref = forms.MultipleChoiceField(choices=GENDER_CHOICES, widget=forms.CheckboxSelectMultiple())
    class Meta:
        model = MyModel

您可以在^{}s here上阅读更多内容—您可能需要根据您的特定需求稍微修改您的表单。你知道吗

或者

 model_instance = MyModel.objects.create(**form.cleaned_data) #manage manually

相关问题 更多 >