我有以下型号:
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)
我Phone
在 ModelForm 中用作表单集。我想要做的是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 风格的方式。
有人有想法吗?