#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
.