Как связать две модели, одна из которых является вопросом, а другая - ответом на него

У меня есть модель Poller, которая содержит вопрос и два связанных варианта ответа (poller_choice_one and two), и другая модель Vote для проверки, проголосовал ли пользователь за первый или второй вариант.

Вот в чем проблема: Как я могу наилучшим образом структурировать и отобразить формы/логику, чтобы любой пользователь мог проголосовать Foo или Bar за определенный вопрос?

Сейчас я попытался отобразить объект Poller с его полями выбора в виде div. Но как бы я затем позволил пользователю проголосовать за один из двух вариантов? (простая кнопка отправки или через форму?) И имеет ли смысл разделять модели, как я сделал, или я могу даже построить эту логику, используя одну модель?

Модель поллера

class Poller(models.Model):
    poller_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    created_by = models.ForeignKey(Account, on_delete=models.CASCADE)

    # Shall the choices be isolated as well into the Vote model?
    poller_choice_one = models.CharField(max_length=30)
    poller_choice_two = models.CharField(max_length=30)

Модель голосования

class Vote(models.Model):
    poller = models.ForeignKey(Poller, on_delete=models.CASCADE, related_name='votes')
    user = models.ForeignKey(Account, on_delete=models.CASCADE, related_name='user')
    poller_choice_one_vote = models.BooleanField(default=False)
    poller_choice_two_vote = models.BooleanField(default=False)
Вернуться на верх