Уникальное значение BooleanField в Django? - PullRequest
69 голосов
/ 21 сентября 2009

Предположим, что мой models.py такой:

class Character(models.Model):
    name = models.CharField(max_length=255)
    is_the_chosen_one = models.BooleanField()

Я хочу, чтобы только один из моих Character экземпляров имел is_the_chosen_one == True, а все остальные * is_the_chosen_one == False. Как я могу наилучшим образом обеспечить соблюдение этого ограничения уникальности?

Высший балл за ответы, которые учитывают важность соблюдения ограничений на уровне базы данных, модели и (администратора) формы!

Ответы [ 11 ]

1 голос
/ 20 мая 2011

Получу ли я баллы за ответы на мой вопрос?

проблема заключалась в том, что он находился в цикле, исправленном:

    # is this the testimonial image, if so, unselect other images
    if self.testimonial_image is True:
        others = Photograph.objects.filter(project=self.project).filter(testimonial_image=True)
        pdb.set_trace()
        for o in others:
            if o != self: ### important line
                o.testimonial_image = False
                o.save()
...