Disons que j'ai les modèles Django suivants :

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)

J'ai besoin d'obtenir la valeur de chaîne de related_name pour Pet.person au moment de l'exécution. Je peux obtenir le related_query_name, qui est "pet" mais c'est légèrement différent du related_name, qui est "pets" :

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

On dirait que le nom associé est sur la classe Person, mais je ne sais pas comment prouver qu'il est lié à Pet.person.

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

Est-ce qu'il y a un moyen de faire ça?

0
Johnny Metz 24 févr. 2020 à 05:20

1 réponse

Meilleure réponse

Essaye ça,

related_name = Pet._meta.get_field('person').remote_field.get_accessor_name()

related_query_name = Pet._meta.get_field('person').related_query_name()
1
JPG 26 févr. 2020 à 04:21