鉴于 models.py 中的以下模型:
class Profile(models.Model):
name = models.CharField(max_length=30)
email_address = models.CharField(max_length=30)
password = models.CharField(max_length=30)
preferences = models.OneToOneField("Preferences")
def __unicode__(self):
return u"%s" % self.name
class Preferences(models.Model):
likes_hugging = models.BooleanField(default=False)
despises_men = models.BooleanField(default=False)
现在 forms.py ...
中的以下表格class PreferencesModelForm(forms.ModelForm):
class Meta:
model = Profile
fields = ("preferences",)
...产生以下结果:
但如何获得以下结果?
答案 0 :(得分:0)
您需要覆盖默认小部件。像这样:
from django.forms import ModelForm, Textarea
from myapp.models import Author
class AuthorForm(ModelForm):
class Meta:
model = Author
fields = ('name', 'title', 'birth_date')
widgets = {
'name': Textarea(attrs={'cols': 80, 'rows': 20}),
}
您可以阅读完整的文档here。问题是你正确使用PreferencesModelForm
吗?该模型应为Preferences
。如果您确实尝试使用Profile
字段制作preferences
模型的表单,则可以使用内联表单集。你可以阅读它here。
答案 1 :(得分:0)
由于您拥有OneToOne关系,因此您需要在案例中使用Radio而不是复选框。
只需添加到您的表单:
widgets = {
'preferences': forms.RadioSelect(),
}
PS:这个问题来自去年,我希望你已经解决了:)我从谷歌来到这里,希望能帮助处于相同情况的人们。