Je reçois tous les champs d'un modèle MyModel._meta.get_fields()
puis je les traite et je veux comprendre lequel d'entre eux a été ajouté par moi-même et lequel par django. Par exemple si j'ai la classe Moovie et la classe Comédie qui ont moovie = models.ForeignKey(Moovie, on_delete=models.CASCADE)
, quand j'obtiendrai les champs Moovie._meta.get_fields()
le champ moovie sera aussi dans cette liste, et si d'autres modèles lient au modèle Moovie, le champ de film sera dans la liste plusieurs fois. J'ai besoin de les sauter.Comprendre les relations dans les champs des modèles django
0
A
Répondre
0
S'il vous plaît jeter un oeil à Django Model, vos besoins seront fixés par ce.
0
Ok, désolé, c'est ma réponse
def field_name(field, ModelClass=None):
if hasattr(field, 'field') and 'get_attname_column' in dir(field.field):
return field.field.get_attname_column()[0]
if 'get_attname_column' in dir(field):
return field.get_attname_column()[0]
field = field.field if hasattr(field, 'field') else ModelClass._meta.get_field(field.field_name)
return field.get_attname_column()[0]
def checkClassHasField(modelClass, field):
name = field_name(field)
try:
modelClass._meta.get_field(name)
return True
except Exception:
return False
Je MyModel._meta.get_fields()
filtrer la liste par cette fonction. Cependant peut-être la meilleure façon existe ...