Как в Django получить булево поле модели, которое является True, если и только оно одно может быть истинным?

У меня есть следующая модель, в которой есть два булевых поля. По моей логике, они не будут оба истинными в любой момент времени. Как я могу получить поле, которое является True простым прямым способом?

class Vote(models.Model):
    poller = models.ForeignKey(Poller, on_delete=models.CASCADE, related_name='vote')
    user = models.ForeignKey(Account, on_delete=models.CASCADE)
    created_on = models.DateTimeField(auto_now_add=True)
    poller_choice_one_vote = models.BooleanField(default=False)
    poller_choice_two_vote = models.BooleanField(default=False)

    def __str__(self):
        return f'Vote by {self.user}'

Вот как я это делаю сейчас:

    voted_for = Vote.objects.get(poller_id=poller_id, user=request.user)

    is_true = voted_for.poller_choice_one_vote
    is_also_true = voted_for.poller_choice_two_vote
    
    if is_true:
        voted_for = voted_for.poller_choice_one_vote
    elif is_also_true:
        voted_for = voted_for.poller_choice_two_vote
    else:
        pass

Возможно, что-то вроде этого, чтобы использовать мета для получения имени поля:

voted_for = Vote.objects.get(poller_id=poller_id, user=request.user)

one = voted_for.poller_choice_one_vote
two = voted_for.poller_choice_two_vote

if one:
    voted_for = Vote._meta.get_field(one)
elif two:
    voted_for = Vote._meta.get_field(two)
Вернуться на верх