Как структурировать модель вопроса Django, имеющую два возможных варианта ответа

В настоящее время я пытаюсь понять, как лучше всего структурировать пару модельных отношений в моем проекте Django.

Существует три модели:

  • Модель аккаунта, которая обрабатывает зарегистрированных пользователей
  • Модель поллера, которая обрабатывает вопросы, задаваемые пользователями, включая два варианта ответа
  • Модель голосования, которая обрабатывает ответы пользователей на вопрос/поллер

Я не думаю, что наличие двух полей выбора как boolean в модели Vote будет работать удобным образом. Как лучше всего поступить в таком случае, когда есть два варианта вопроса, когда пользователь может проголосовать только за Foo или Bar?

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

class Poller(models.Model):
    poller_id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    user = models.CharField(max_length=100) # replace this with OneToOne relationship to the user model?
    poller_text = models.CharField(max_length=250)

    # Populated at post by user who publishes the poller
    poller_choice_one = models.CharField(max_length=30)
    poller_choice_two = models.CharField(max_length=30)

    # Poller votes made by community // create new model for these?
    poller_choice_one_votes = models.IntegerField(default=0)
    poller_choice_two_votes = models.IntegerField(default=0)

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

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_votes = models.BooleanField(default=False)
    poller_choice_two_votes = models.BooleanField(default=False)

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

Модель Account более или менее унаследована от AbstractUser.

Вернуться на верх