理解Django模型域中的关系

2024-06-16 11:42:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我得到某个模型MyModel._meta.get_fields()的所有字段,然后对它们进行处理,希望了解哪些是我自己添加的,哪些是django添加的。 例如,如果我有类Moovie和类Comedy,它们有moovie = models.ForeignKey(Moovie, on_delete=models.CASCADE),当我得到字段Moovie._meta.get_fields()时,字段Moovie也会在这个列表中,如果其他模型链接到Moovie模型,Moovie字段会在列表中出现好几次。我需要跳过它们


Tags: django模型fields列表getonmodelsdelete
2条回答

好的,对不起,这是我的答案

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()列表。 然而也许更好的办法是存在

请看一下Django Model,您的需求将由此解决

相关问题 更多 >