django 在下面的代码中,def保存()是如何工作的?

nfg76nw0  于 2023-09-28  发布在  Go
关注(0)|答案(1)|浏览(84)

已关闭。此问题需要更多focused。目前不接受回答。
**要改进此问题吗?**更新此问题,使其仅针对editing this post的一个问题。

8天前关闭。
Improve this question
在这段代码中解释了下面提到的代码块的工作

from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth.models import User
from django import forms

class NewUserForm(UserCreationForm):
    CHOICES=(
        ('Doctor','D'),
        ('Patient','P'),
        ('Manager','M')
    )
    email = forms.EmailField(required=False)
    username = forms.CharField(required=True)
    phone = forms.IntegerField(required=False)
    role = forms.CharField(widget=forms.Select(choices=CHOICES))
    password1 = forms.CharField(required=True)
    password2 = forms.CharField(required=True)
    

    class Meta:
        model = User
        fields = ("email","username","phone","role","password1","password2")
    
    def save(self,commit=True):
        user = super(NewUserForm,self).save(commit=False)
        user.email = self.changed_data['email']
        if commit:
            user.save()
        return user

字符串
请解释一下
def保存和类Meta,这里.保存(commit=False)有什么用。

1hdlvixo

1hdlvixo1#

从您的评论中,我看到您不理解为什么父级的保存是用commit=False调用的。
好吧,“提交”背后的想法是你保存完整的更改数据。你不去更改和保存。你首先更改所有内容,然后提交“更改集”。
你调用父保存而不提交修改,因为你仍然要设置user.email变量。你只在那之后提交:

if commit:
    user.save();

字符串

相关问题