我遇到一个问题
我的一个函数返回模型的字段名称
例如我的模型。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”
答案 0 :(得分:1)
在执行query.f
时,它不是在寻找f
变量包含的字符串值,而是模型实例的实际f
属性。
for f in secured_fields:
print(getattr(query, f, None))
getattr(object, name, default)
返回已命名的值 对象的属性。 名称必须是字符串。