галочка django "эксклюзив" - PullRequest
0 голосов
/ 09 июня 2011

Мне было интересно, как я могу иметь в Django «эксклюзивный» флажок и установить его в админке?Я имею в виду, что у меня есть приложение, которое хранит опросы, и на главной странице может быть только одно, поэтому я добавляю поле front_page в базу данных и заставляю его работать как bool.Правда шоу, Ложь нет.Поэтому всякий раз, когда я устанавливаю в админе поле front_page опроса на true, я хочу, чтобы все остальные опросы были установлены на false, это редактирование выполняется администратором.Как Flasker, я могу придумать 100 способов сделать это в другом месте, но эта штука с django привела меня в замешательство.Спасибо!

1 Ответ

2 голосов
/ 09 июня 2011

По сути, вы хотите переопределить метод сохранения модели, имеющей эксклюзивный флаг, а затем в методе сохранения проверьте, включен ли этот флаг.Если это так, то сделайте запрос, чтобы найти все записи с включенным флагом и отключить их.Тогда сохраните.Это будет выглядеть примерно так:

class Poll(models.Model):
    #...
    front_page = models.BooleanField()
    #...

    def save(self, *args, **kwargs):
        if self.front_page:
            Poll.objects.filter(front_page=True).update(front_page=False)

        super(Poll, self).save(*args, **kwargs)

Надеюсь, это поможет!

...