Ограничения Django: уникальные вместе и принимающие одно и только одно значение
Я пытаюсь реализовать ограничение для следующей модели:
class Consumption(models.Model):
simcard = models.ForeignKey(SimCard, on_delete=models.CASCADE)
start_date = models.DateTimeField()
duration_billed = models.FloatField(null=True)
volume_billed = models.FloatField(null=True)
sms_billed = models.FloatField(null=True)
Я хочу ограничить пользователя в сохранении одного и только одного значения для duration_billed, volume_billed, sms_billed для заданной simcard и start_date.
У меня есть следующий мета-класс:
class Meta:
constraints = [
UniqueConstraint(
fields=['simcard', 'start_date', 'duration_billed'],
name='unique_simcard_and_start_date_and_duration_billed'
),
UniqueConstraint(
fields=['simcard', 'start_date', 'volume_billed'],
name='unique_simcard_and_start_date_and_volume_billed'
),
UniqueConstraint(
fields=['simcard', 'start_date', 'sms_billed'],
name='unique_simcard_and_start_date_and_sms_billed'
),
]
Проблема, с которой я столкнулся при работе с ограничениями, заключается в том, что БД принимает несколько значений duration_billed, volume_billed, sms_billed для заданной simcard и start_date.
Результат, которого я пытаюсь достичь: если продолжительность_выставленного счета существует для данной симкарты и даты начала, пользователь не должен иметь возможности импортировать новую продолжительность_выставленного счета (даже если значение отличается от того, которое хранится в DB) для той же симкарты и даты начала. Та же цель для volume_billed и sms_billed.
Надеюсь, моя проблема ясна. Любая помощь или совет будут очень признательны 🙏
Большое спасибо заранее