Как структурировать модель вопроса 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.