Мне интересно, как иметь валидации для связанных объектов. К моему удивлению, я не нашел много важной информации об этом.Проверка моделей связанных с Django
Например:
class Listing(models.Model):
categories = models.ManyToManyField('Category')
price_sale = models.DecimalField(max_digits=8, decimal_places=0, null=True)
price_rent = models.DecimalField(max_digits=8, decimal_places=0, null=True)
price_vacation = models.DecimalField(max_digits=8, decimal_places=0, null=True)
class Category(models.Model):
value = models.CharField(max_length=32)
class Image(models.Model):
listing = models.ForeignKey('Listing')
image = models.ImageField(upload_to=get_file_path)
- Как я могу убедиться, что по крайней мере один
category
установлен, нет дубликатов для листинга? - Как я могу убедиться, что если один из
categories
является «продажа»,price_sale
должен быть установлен или же установить значение null? - Как я могу убедиться, что вставлен хотя бы один
image
, но не более чем сказать 10 изображений?
Я думаю, что это должно быть сделано в модели на случай, если я выберу данные вне форм (что-то вроде разбора фида), будет ли это правильно? Я пробовал иметь дело с clean()
, но для этого требуется ПК, прежде чем позволить мне разобраться с отношениями m2m и т. Д.
Вопрос с бонусом: Почему я решил ограничить поле, используя варианты, а не ограничивать FK?
Это будет больше для проверки объединения строк таблицы сама по себе, а не по отношению к 'listing' нет? Я бы хотел, чтобы «листинг» был вставлен без какого-либо отношения m2m. – RS7