Django — Показать BooleanField в наборе форм как одну группу переключателей

У меня есть следующие модели:

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', )

It покажет двапереключателя, и они будут сгруппированывместе рядом с каждым экземпляром Вместо этого я ищу способ показать только один переключатель рядом с каждым экземпляром (который следует установить primary=Trueдля этого экземпляра) и сгруппировать весь набор переключателей, чтобы можно было выбрать только один из них.

Я также ищу чистый способ сделать это, я могу сделать большую часть вышеперечисленного вручную - в моей голове, но мне интересно посмотреть, есть ли лучший способ сделать это, способ в стиле джанго.

У кого-нибудь есть идеи?

6
задан Aziz Alfoudari 18 March 2012 в 15:09
поделиться