2017-10-06 190 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()名单。 但是可能是更好的方法是存在的......