2017-10-06 2 views
0

Ich bekomme alle Felder von einigen Modell MyModel._meta.get_fields() und dann verarbeite ich sie und will verstehen, welche von mir selbst und welche von Django hinzugefügt. Zum Beispiel, wenn ich Klasse Moovie und Klasse Comedy habe, die moovie = models.ForeignKey(Moovie, on_delete=models.CASCADE) haben, wenn ich Felder Moovie._meta.get_fields() Feld Moovie erhalten werde auch in dieser Liste sein, und wenn andere Modelle zu Moovie Modell verknüpfen, wird MOOVIE Feld in der Liste mehrmals sein. Ich muss sie überspringen.Verständnis von Beziehungen in Django-Modelle Felder

Antwort

0

Bitte werfen Sie einen Blick in Django Model, Ihre Anforderung wird dadurch behoben werden.

0

Ok, sorry, das ist meine Antwort

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 

I MyModel._meta.get_fields() Liste von dieser Funktion filtern. Allerdings kann es besser sein, existiert ...