Django Уникальное ограничение для трех полей не работает

У меня есть следующая модель.

class ModelAnswer(BaseModel):
    questions = models.ForeignKey(
        to=ModelQuestions,
        on_delete=models.CASCADE
    )
    answer = models.TextField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)


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

    class Meta:
        constraints = [
            models.UniqueConstraint(fields=['created_at','user', 'questions' ], name='unique questions per user')
        ]

План состоит в том, чтобы иметь один ответ на вопрос пользователя в день, т.е. на следующий день новый ответ может быть добавлен для нового вопроса, но только один раз. Я пытался добавить уникальное ограничение, но оно не работает

Моя модель вопроса выглядит следующим образом

class ModelQuestions(BaseModel):
    MODEL_CATEGORY_CHOICES = (
        ('Circumstances', 'Circumstances'),
        ('Thoughts', 'Thoughts'),
        ('Feelings', 'Feelings'),
        ('Action', 'Action'),
        ('Result', 'Result'))
    model_subcategory = models.CharField(max_length=50, choices=MODEL_CATEGORY_CHOICES)
    questions = models.CharField(max_length=200)

    def __str__(self):
        return self.model_subcategory

Как разрешить уникальные ответы на вопросы пользователей каждый день? Хотя я пробовал метод фильтрации с помощью exists() soln, но я хочу реализовать уникальное ограничение.

Вы можете сделать это следующим образом

class ModelAnswer(BaseModel):
    questions = models.ForeignKey(
    to=ModelQuestions,
    on_delete=models.CASCADE
)
    answer = models.TextField()
    user = models.ForeignKey(User, on_delete=models.CASCADE)

class Meta:
    unique_together = ('created_at', 'user', 'questions', {'message': 
              'created_at, user, and questions must be unique together'})
Вернуться на верх