如何检查对象是否在数组的对象值内?

时间:2019-02-18 10:06:45

标签: python django if-statement django-rest-framework python-object

我正在为Django Rest Framework构建服务器。它为房屋,合同和所有者建模。基本上,一个House可以有多个Contract,每个Contract都有一个Owner

我正在为DetailView的{​​{1}} s编写自定义权限,如果您拥有House(如果您有{{1 }}代表House,而您就是Contract

这是我到目前为止所拥有的:

House

此代码无效。在JavaScript中,您可以编写:

Owner

或类似的东西。 Python不是我的主要语言,所以我不知道如何用Python或Django表达这种条件。

您将如何编写此书?非常感谢

1 个答案:

答案 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()