2017-10-06 189 views
0

我得到了一些模型MyModel._meta.get_fields()的所有領域,然後我處理它們,並想了解哪些由我自己添加,哪些由django添加。 例如,如果我有Moovie類和有喜歡moovie = models.ForeignKey(Moovie, on_delete=models.CASCADE)的類喜劇,當我將得到字段Moovie._meta.get_fields()字段moovie也將在此列表中,並且如果其他模型鏈接到Moovie模型,moovie字段將在列表中多次。我需要跳過它們。瞭解Django模型領域的關係

回答

0

好了,對不起,這是我的回答

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 

我可以通過這個功能篩選MyModel._meta.get_fields()名單。 但是可能是更好的方法是存在的......