Условное отношение Django «Многие к одному»?

#sql #django #django-models

#sql #django #django-модели

Вопрос:

У меня есть три модели:

  • Продукт
  • Вариация
  • BundledItem

Variation и BundledItem имеют отношение «многие к одному» к продукту.

«Тип» продукта (CharField с вариантами выбора) может быть «простым», «переменным» или «пакетом».

Я хочу убедиться, что вариация может быть связана только с продуктом типа ‘variable’, а BundledItem может быть связан только с продуктом типа ‘bundle’.

Как я могу реализовать это как условие или проверить тип продукта как часть связывания Variant / BundledItem?

Ответ №1:

Вы можете отфильтровать продукты в запросе, чтобы получить желаемый тип:

 Product.object.filter(type='simple')
 

Это даст вам все продукты с типом «простой»

После этого вы можете отфильтровать его дальше, например, по идентификатору или названию продукта:

 Product.object.filter(name='my_product_name')
 

Этот тип запросов также может быть выполнен одной командой путем объединения фильтров:

 Product.object.filter(type='simple', name='my_product_name')
 

Проверьте официальные документы по созданию запросов, это очень полезно