首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用queryset检查模型是否具有属性(OneToOneField)?

如何使用queryset检查模型是否具有属性(OneToOneField)?
EN

Stack Overflow用户
提问于 2017-11-26 18:37:24
回答 1查看 1.7K关注 0票数 2

我使用默认的User模型,Agent充当OneToOne配置文件模型。我想要创建一个查询集的所有用户谁有代理作为一个字段。我知道hasattr,但是它返回一个True/False布尔值,所以我无法在查询中实现它。

视图

代码语言:javascript
复制
class AgentSearchResults(ListView):
    model = User
    template_name = 'agent_search_results.html'

    def get_queryset(self):
        queryset = super(AgentSearchResults, self).get_queryset()
        # Write something here to check if all users in 'queryset' has 'agent'.
        return queryset

供参考的模型

代码语言:javascript
复制
class Agent(models.Model):  
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='agent')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-26 18:50:10

您可以通过检查筛选是相关模型的pk为空

代码语言:javascript
复制
User.objects.filter(agent__pk__isnull=False)

就你的情况而言:

代码语言:javascript
复制
def get_queryset(self):
    queryset = super(AgentSearchResults, self).get_queryset()
    # Write something here to check if all users in 'queryset' has 'agent'.
    queryset = queryset.filter(agent__pk__isnull=False)
    return queryset
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47499648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档