У меня есть следующие модели:
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
для этого экземпляра), и чтобы весь набор радиокнопок был сгруппирован вместе, чтобы можно было выбрать только одну из них..
Я также ищу чистый способ сделать это, я могу сделать большинство вышеперечисленного вручную - в своей голове - но мне интересно посмотреть, есть ли лучший способ сделать это,в стиле джанго.
У кого-нибудь есть идеи?