给出了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",)..。产生以下结果:

但是,我如何得到下面的结果而不是

发布于 2013-06-13 04:29:31
您需要覆盖默认的小部件。如下所示:
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}),
}您可以阅读完整的docs 这里。问题是,您是否正确地使用了PreferencesModelForm?模型应该是Preferences。如果您真的试图使用Profile字段为preferences模型创建表单,则可以使用内联格式集。你可以读这里。
发布于 2014-12-19 19:29:48
在您的情况下,您需要使用收音机而不是复选框,因为您有一个OneToOne关系。
只需在表格中添加:
widgets = {
'preferences': forms.RadioSelect(),
}PS:这个问题是从去年开始的,我希望你已经解决了它:)我从谷歌来到这里,希望能帮助处于同样情况下的人们。
https://stackoverflow.com/questions/17044726
复制相似问题