Python 使用django中的一个查询在关联模型中保存数据
我正在django项目的注册模块上工作。为了注册用户,我使用auth_user table扩展这个表,我又创建了一个模型配置文件Python 使用django中的一个查询在关联模型中保存数据,python,django,database,Python,Django,Database,我正在django项目的注册模块上工作。为了注册用户,我使用auth_user table扩展这个表,我又创建了一个模型配置文件 from django.contrib.auth.models import User class Profile(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) start_date = models.DateField() phone_nu
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
start_date = models.DateField()
phone_number = models.CharField(max_length=12)
address = models.CharField(max_length=225)
subscription = models.BooleanField(default=False)
已成功创建配置文件表。现在我想做的是,当我提交注册表时,注册表中与配置文件模型相关的字段应该在插入与auth_用户模型相关的字段后自动插入。
这意味着我不想首先在auth_用户模型中插入数据,然后在获取其id后再次在概要表中插入数据。
我想在一个查询中插入完整的记录。有可能吗?我认为您可以定义一个注册表单,并在创建用户模型时覆盖表单
保存方法来保存配置文件。示例代码供您参考:
class RegistrationForm(forms.ModelForm):
start_date = forms.DateField()
phone_number = forms.CharField()
address = forms.CharField()
subscription = forms.BooleanField()
class Meta:
model = User
def save(self, commit=True):
instance = super(RegistrationForm, self).save(commit=commit)
profile = Profile(user=instance, start_date=self.cleaned_data['start_date'], phone_number=self.cleaned_data['phone_number'], address=self.cleaned_data['address'], subscription=self.cleaned_data['subscription'])
profile.save()
return instance
def register(request):
if request.method == 'POST':
form = RegistrationForm(request.POST)
if form.is_valid():
user = form.save()
# do anything after user created
else:
raise Error('form validate failed')
else:
# handling the GET method
不。你为什么要关心它是一个查询还是两个查询?我是Php开发人员,但这个项目我必须在django中完成,在Php的Cakephp框架中,我们可以只使用一个查询在关联表中插入记录,以使代码更干净和简单。对于记录,这是两个查询。