我目前正在用Django编写一个系统,我想在创建另一个模型的同时保存一个用户。
型号代码:
class MyModel(models.Model):
user = models.OneToOneField(User,related_name="profile",primary_key=True)
custom_field = models.CharField(...)当然,该模型更详细,但它显示了整个过程的设置。
示例表单:
First name: [input]
Last name: [input]
Email: [input]
Password: [pass_input]
Custom Text: [text_input]使用ModelForm可以做到这一点吗?
发布于 2017-11-14 01:27:32
可以;您可以创建一个与MyModel对应的ModelForm
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = ['custom_field']然后在您的视图中,您可以使用commit=False (https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#the-save-method)中断此表单的保存,并手动设置新对象的user值。例如,您可以像这样设置user = request.user:
if form.is_valid():
instance = form.save(commit = False)
instance.user = request.user
instance.save()
form.save_m2m() #if your form has any m2m data to save发布于 2017-11-14 01:35:17
是。在您的forms.py文件中,添加以下代码:
class UserForm(ModelForm):
class Meta:
model = User
fields = ('first_name', 'last_name', 'email')
class ProfileForm(ModelForm):
class Meta:
model = MyModel
fields = ('customfield1', 'customfield2')EDIT这里有一个很棒的教程可以帮助你做到这一点:https://simpleisbetterthancomplex.com/tutorial/2016/07/22/how-to-extend-django-user-model.html
https://stackoverflow.com/questions/47269268
复制相似问题