获取字段名称列表,但无法从对象访问值

时间:2020-07-17 06:51:55

标签: django django-views

我遇到一个问题

我的一个函数返回模型的字段名称

例如我的模型。py

class Branch( Model):
    branch_name = models.CharField(max_length=255, blank=True)
    branch_area = models.ForeignKey(
        Location, on_delete=models.SET_NULL, blank=True, null=True)
    manager = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True,
        )

在我的views.py

def sample_function(request, id=None):
    query = get_object_or_404(Branch, id=id) if object_id else None
    secured_fields = secured_fields(
        Branch
    )  # This will return the secured fields of that model in the list

    # form example : secured_fields =  ['manager']

    for f in secured_fields:
        print(query.f)

显示错误“分支”对象没有属性“ f”

1 个答案:

答案 0 :(得分:1)

在执行query.f时,它不是在寻找f变量包含的字符串值,而是模型实例的实际f属性。

for f in secured_fields:
    print(getattr(query, f, None))

getattr(object, name, default)
返回已命名的值 对象的属性。 名称必须是字符串。