Предположим, у вас есть две связанные модели: SomeModel
и SomeOtherModel
, а SomeOtherModel.somemodel
- это ForeignKey для SomeModel
.
Для любого экземпляра SomeModel
свойство someothermodel_set
является менеджером для уже отфильтрованной связанной модели.Например:
>>> your_some_model_instance = SomeModel.objects.all()[0]
В этом случае your_some_model_instance.shomeothermodel_set
эквивалентно:
>>> SomeOtherModel.objects.filter(somemodel=your_some_model_instance)
[обновление]
извините, возможно, я не объяснилмои вопросы более понятны, это сложно объяснить ... Я понимаю, что XX_set и related_name относятся к менеджеру, то, что я хочу спросить, в первом запросе, почему бы не использовать (package_set_ status = 'live'), учитывая второйрабочий запрос (business _package__status = 'live'), он сбивает с толку, потому что второй запрос ссылается на менеджера (по related_name), но первый запрос не ...
Интерфейс фильтраиспользует соглашение relatedmodelname__relatedmodelfield;В вашем примере related_name использовалось для придания более оригинального имени обратной ссылке, но это не является его главной целью;Назначение параметра related_name в полях ForeignKey - решение неоднозначности в случаях, когда relatedmodelname конфликтует с уже существующим полем в ForeignKey.