我有以下链接到“user”的模型:
class Profile(models.Model):
user = models.OneToOneField(User)
title = models.CharField(max_length=10)
dob = models.DateField(max_length=8)
class Meta:
managed = True
db_table = 'fbf_profile'
然后我有以下注册表格:
class RegistrationForm(BootstrapModelForm,UserCreationForm):
def __init__(self, *args, **kwargs):
super(RegistrationForm, self).__init__(*args, **kwargs)
# The default Django user model doesn't require these fields to be set
# but we do.
self.fields['first_name'].required = True
self.fields['last_name'].required = True
self.fields['email'].required = True
def clean_email(self):
email = self.cleaned_data['email']
if User.objects.filter(email__iexact=email).exists():
raise ValidationError('There is already an account registered with this e-mail address.')
return email
class Meta:
model = User
fields = ['first_name', 'last_name', 'email', 'username']
然后我可以在我的模板中使用它们:
<div class="form-group">
<label class="col-sm-5 control-label">{{ form.first_name.label }}:</label>
<div class="col-sm-7">
{{ form.first_name }}
<div class="text-danger">
{% for error in form.first_name.errors %}{{ error }}<br/>{% endfor %}
</div>
</div>
</div>
但是,我如何在模板中使用Profile模型中的“dob”,就像我在上面使用form.first_name.label和form.first_name一样。非常感谢Alan。
答案 0 :(得分:1)
如果使用modelForms
,您需要两种不同的表单 - 一种用于User
模型,另一种用于Profile
模型。然后,您可以在模板中的同一<form>
标记内显示,并在视图中验证/保存两者。
另一个解决方案是定义一个包含两个模型字段的普通(非模型&#39;)表单,并自己编写save
方法。
答案 1 :(得分:0)
假设form
是您在模板中使用的User
个对象,您应该能够使用dob
访问form.profile.dob
字段。< / p>
答案 2 :(得分:0)
非常感谢Bruno给出了正确答案。它引导我到以下链接:
我希望它有所帮助。