Как связать две модели, одна из которых является вопросом, а другая - ответом на него
У меня есть модель 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)