Мне интересно, как получить проверки для связанных объектов.К моему удивлению, я не нашел много соответствующей информации по этому вопросу.
Например:
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
равен ' sale ', price_sale
должен быть установлен или иначе равен нулю? - Как я могу убедиться, что по крайней мереодин
image
вставлен, но не более, чем, скажем, 10 изображений?
Я думаю, что это должно быть сделано в модели на случай, если я решу ввести данные помимо форм (что-то вроде анализа канала), это будет правильно?Я пытался разобраться с clean()
, но для этого требуется PK, прежде чем разрешить мне иметь дело с отношениями m2m и т. Д.
Бонусный вопрос: почему я предпочел бы ограничить поле, используя варианты, а не FK?