【发布时间】:2012-04-03 07:07:48
【问题描述】:
我有以下型号:
class Profile(models.Model):
verified = models.BooleanField(default=False)
def primary_phone(self):
return self.phone_set.get(primary=True)
class Phone(models.Model):
profile = models.ForeignKey(Profile)
type = models.CharField(choices=PHONE_TYPES, max_length=16)
number = models.CharField(max_length=32)
primary = models.BooleanField(default=False)
def save(self, force_insert=False, force_update=False, using=None):
if self.primary:
# clear the primary attribute of other phones of the related profile
self.profile.phone_set.update(primary=False)
self.save(force_insert, force_update, using)
我在 ModelForm 中使用 Phone 作为表单集。我想要做的是将Phone.primary 显示为Phone 的每个实例旁边的单选按钮。如果我将主要作为RadioSelect 小部件:
class PhoneForm(ModelForm):
primary = forms.BooleanField(widget=forms.RadioSelect( choices=((0, 'False'), (1, 'True')) ))
class Meta:
from accounts.models import Phone
model = Phone
fields = ('primary', 'type', 'number', )
它将显示两个单选按钮,它们将在每个实例旁边分组在一起。相反,我正在寻找一种方法,在每个实例旁边只显示一个单选按钮(应该为该实例设置primary=True),并将所有单选按钮组合在一起,以便只能选择其中一个.
我也在寻找一种干净的方法,我可以手动完成上述大部分操作 - 在我的脑海中 - 但我有兴趣看看是否有更好的方法,一种 django 风格方式。
有人有想法吗?
【问题讨论】:
标签: django django-models django-widget django-forms