Django получить тип модели внешнего ключа для поля OneToMany - PullRequest
1 голос
/ 19 марта 2020

Итак, в Django 1.10 я пытаюсь извлечь модель для указанного атрибута c, который является внешним ключом в отношении один-ко-многим с родительским классом. Например:

class some_class(models.Model):
    some_text = models.TextField(blank=True, null=True)

class another_class(models.Model):
    a_field = models.TextField(blank=True, null=True)
    many    = models.ForeignKey(some_class, models.SET_NULL, db_column='some_class_id', related_name='another_class_things', blank=True, null=True)

Если я должен был сделать:

the_class = some_class._meta.get_field('another_class_things').rel.to

Я получаю сообщение об ошибке:

'ManyToOneRel' object has no attribute 'rel'

Это работает нормально, когда есть один отношения один к одному, однако это не работает для отношений один ко многим. Какая альтернатива получить модель атрибута? (ie: вернуть 'another_class' в описанной выше ситуации)

1 Ответ

1 голос
/ 19 марта 2020

Вы можете получить модель, на которую указывает отношение:

# for a one-to-many relation
the_class = some_class._meta.get_field('another_class_things')<b>.field.model</b>

Таким образом, здесь мы получаем с field ForeignKey, который используется для определения ManyToOneRel в обратном порядке, и мы затем получите модель, в которой это ForeignKey определено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...