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'})