我正在为Django Rest Framework构建服务器。它为房屋,合同和所有者建模。基本上,一个House
可以有多个Contract
,每个Contract
都有一个Owner
。
我正在为DetailView
的{{1}} s编写自定义权限,如果您拥有House
(如果您有{{1 }}代表House
,而您就是Contract
。
这是我到目前为止所拥有的:
House
此代码无效。在JavaScript中,您可以编写:
Owner
或类似的东西。 Python不是我的主要语言,所以我不知道如何用Python或Django表达这种条件。
您将如何编写此书?非常感谢
答案 0 :(得分:1)
正如我在评论中提到的那样,问题不是Python语法之一。问题是obj.contracts
大概是一个ForeignKey,它返回一个查询集;查询集将没有owner
属性,该属性是查询集中每个模型实例上的字段。
现在您可以执行以下操作以获取所有所有者的列表:
if owner and owner in obj.contracts.values_list('owner', flat=True)
但这将是错误的解决方案。如果所有者在合同所有者的列表中,那么您真正想做的是询问数据库:
if owner and obj.contracts.filter(owner=owner).exists()