Использование ограничений db для ограничения внешнего ключа, чтобы только один ключ имел булево значение false, а остальные true
У меня есть модель ниже
class MaintenancePersonnel(models.Model):
performed_by=models.ForeignKey(User,on_delete=models.CASCADE)
work_performed=models.ForeignKey(EquipmentMaintenanceSchedule,on_delete=models.CASCADE)
comments=models.TextField(blank=True,null=True)
is_performed=models.BooleanField(default=False)
Я хочу, чтобы для данной выполненной работы было только одно поле, которое имеет is_performed False
я пробовал использовать условие, но это, похоже, заставляет только одну модель иметь is_performed равным false независимо от выполненной работы
class Meta:
constraints = [
models.UniqueConstraint(fields=['work_performed','is_performed'], condition=models.Q(is_performed=False), name='unique_is_performed_False')
]
Попробуйте установить в поле UniqueConstraint только work_performed с условием is_performed.
models.UniqueConstraint(fields=['work_performed'], condition=models.Q(is_performed=False), name='unique_is_performed_False')
Это должно ограничить ваши модели одним work_performed, где is_performed равно false. Это похоже на случай, представленный в docs