У меня есть модель
class myModel(models.Model):
name = models.CharField(max_length=100)
type = models.CharField(max_length=100)
nums = JSONField(null=True, blank=True)
Мне нужно сохранить числа в поле nums
. Но никакие два экземпляра myModel
, которые имеют одинаковые type
, не могут иметь одинаковые номера (пересечение полей nums
должно быть нулевым).
Я попытался написать для него сигнал
@receiver(pre_save, sender = myModel)
def check_duplicate_nums(sender, instance, **kwargs):
all_records = myModel.objects.filter(type = instance.type)
for record in all_records:
common_nums = list(set(record.nums).intersection(instance.nums))
if len(common_nums) != 0:
raise Exception("nums "+str(common_nums)+ " are repeated in " +str(record.name)+ " and "+instance.name)
Но при этом открывается окно отладки администратора django. Я хочу, чтобы ошибка отображалась прямо здесь. Например, когда мы сохраняем модель с пустым полем, и она выдает ошибку, говорящую «Эта строка обязательна» в выделенной красным цветом строке. Мне нужно, чтобы отобразить ошибку таким образом. Пожалуйста, предложите способ.
Спасибо!