Получить related_name поля Django ForeignKey во время выполнения - PullRequest
0 голосов
/ 24 февраля 2020

Допустим, у меня есть следующие Django модели:

class Person(models.Model):
    name = models.CharField(max_length=50)

class Pet(models.Model):
    name = models.CharField(max_length=50)
    person = models.ForeignKey(Person, related_name='pets', on_delete=models.CASCADE)

Мне нужно получить строковое значение related_name для Pet.person во время выполнения. Я могу получить related_query_name, то есть "pet", но это немного отличается от related_name, "pets":

print(Pet._meta.get_field("person").related_query_name())
# pet

Похоже, связанное имя в классе Person , но я не уверен, как доказать, что он привязан к Pet.person.

print("pets" in [f.name for f in Person._meta.get_fields()])
# True

Есть ли еще способ сделать это?

1 Ответ

1 голос
/ 24 февраля 2020

Попробуйте,

related_name = Pet._meta.get_field('person')<b>.remote_field.get_accessor_name()</b>

related_query_name = Pet._meta.get_field('person')<b>.related_query_name()</b>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...