в чем может быть причина, по которой _set не создается при создании отношения FK в Django?

#django #foreign-keys #django-related-manager

#django #внешние ключи #django-related-manager

Вопрос:

У меня следующая структура данных

 class A(models.Model):
   a number of fields here

class AbstractParent(models.Model):
   some fields here

   class Meta:
       abstract = True

class B(AbstractParent):
   a = ForeignKey(A, null=True,default=None, blank=True, on_delete=models.SET_NULL)
 

Я ожидал бы получить доступ к объекту класса B, который fk к экземпляру A a через a.b_set или a.bs_set , однако, я получаю только ошибку, для которой атрибут b_set не существует a . Есть идеи, почему это возможно и как получить доступ b к этим ссылкам a через a себя?

Комментарии:

1. Можете ли вы получить доступ a из B экземпляров? Каков результат A._meta.related_objects и B._meta.related_objects ?

2. Вероятно, вам следует показать свой реальный код. Вероятно, это зависит от того, что вы нам не показываете.

3. Это должно сработать. Вы пробовали устанавливать связанное имя для внешнего ключа и использовать его?

4. @EndreBoth да, доступ к a из экземпляров b работает нормально. b.a возвращает объект, к которому b fk. b._meta.related_objects ожидаемо пуст, в то время как a._meta.related_objects возвращает целую кучу отношений (это большой проект), включая <ManyToOneRel: module_name.a>.

5. Затем запустите A._meta.related_objects[x].related_name сюрприз ( x соответствующий числовой индекс для <ManyToOneRel: module_name.a> отношения; вы также можете запустить for ... in .