【问题标题】:Django queryset filteringDjango 查询集过滤
【发布时间】:2019-04-15 23:31:15
【问题描述】:

我的 models.py 中有 2 个主要实体:

class IPGroup(models.Model):
    name = models.CharField(max_length=50, unique=True)
    address = models.CharField(max_length=50, unique=True)

class Tag(models.Model):
    name = models.CharField(max_length=100)
    value = models.CharField(max_length=100)

这两个表通过第三个表链接如下:

class IPGroupToTag(models.Model):
    ip_group = models.ForeignKey(IPGroup)
    tag = models.ForeignKey(Tag)

当我唯一的输入是 name 的强>IP组。我的尝试如下:

ip_group_id = IPGroup.objects.get(name="test_ip_group").id
zone = IPGroupToTag.objects.filter(ip_group_id=ip_group_id).values('tag__name')

这给了我以下查询集:

<QuerySet [{'tag__name': 'Title'}, {'tag__name': 'Site'}, {'tag__name': 'SecurityZone'}, {'tag__name': 'DataCenter'}, {'tag__name': 'Pod'}]>

然后我如何找到名为 SecurityZone 的标签的 id,然后找到它的 value

【问题讨论】:

    标签: python django django-queryset


    【解决方案1】:
    IPGroupToTag.objects.filter(ip_group__name='test_ip_group',tag__name='SecurityZone').values('tag__value')
    

    这一查询将完成您要查找的内容

    【讨论】:

    • 这很好用...最后一件事.. Queryset 类型的最终输出如下:。我怎样才能获得价值核心?
    • Exprator..我做了这个..IPGroupToTag.objects.filter(ip_group__name=request["source_ip_group"], tag__name='SecurityZone').values('tag__value')[0]['tag__value ']....不确定这是否是最好的方法..
    • 使用 for 循环将查询保存到变量中,然后执行 for i in variable: print(i['tag_value']
    猜你喜欢
    • 2020-08-22
    • 2011-09-29
    • 2019-03-16
    • 2018-10-02
    • 2019-07-29
    • 2023-04-03
    相关资源
    最近更新 更多