【问题标题】:How to retrieve django db info如何检索 django 数据库信息
【发布时间】:2015-06-02 12:54:53
【问题描述】:

我正在介绍 django。我创建了一个包含两个字段的模型:Clientes 和 Equipos。

我想用我自己的格式打印,所以我想要一个列表或更好的字典。

但我不知道“example = models.object.values()”是做什么的。不知道example是列表还是字典……

我已经尝试使用 models.object.get() 但它不起作用。

谢谢。

【问题讨论】:

    标签: django database object models


    【解决方案1】:

    实际上,example 是django.db.models.query.ValuesQuerySet 的一个实例,不仅仅是一个简单的列表,它是一个查询集

    因为example是一个查询集,你可以使用查询集的方法,为所欲为。django queryset文档很有帮助。

    你可以像这样遍历example变量:

    for item in example:
      do_what_you_want(item)
    

    当您在模型中声明时,您的示例可能如下所示:

    example = [  
                 {'Clients':'clients data','Equipos':'equipos data'},
                 {'Clients':'clients data','Equipos':'equipos data'}
              ]
    

    我不建议你把你的example转换成list类型,这样的话你就不能使用强大的django查询集方法了。Django的查询集方法比python原生列表更强大。

    【讨论】:

    • 嗯,我明白了。所以如果我想打印我的 django 查询 do_what_you_want 应该直接打印项目。
    【解决方案2】:
    example = models.object.values()
    

    example 将是一种字典迭代器,其中键是模型的字段名称。要使其成为 dicts 列表,只需执行以下操作:

    example = list(models.object.values())
    

    所以example 看起来像这样:

    [
        {'id': 1, 'Clientes': 'some clientes', 'Equipos': 'some equipos'},
        {'id': 2, 'Clientes': 'anoter clientes', 'Equipos': 'another equipos'}
    ]
    

    【讨论】:

    • 我明白了,谢谢,但是如果我有超过 2 个字段会怎样?我的意思是... `example = models.object.values(Clientes,Equipos,AnotherField,AnotherField) ` 在这种情况下,关键是什么?我还有一个问题。我明白了,但是当我打印它时,我的钥匙前有一个额外的字符“u”。看,[(u'test22', 4), (u'test', 4)] 应该是 'test22',4 ...
    • 当然,额外的键将被添加到字典中。 {..., 'AnotherField': 'some'}。我忘了提到id 字段也将在字典中。
    • 字符串前的额外u char 表示字符串是unicode:docs.python.org/2/howto/…
    • 感谢 catavaran,哇!我只是另一个问题......我试图获得一个客户的价值观。我正在这样做:`
    猜你喜欢
    • 1970-01-01
    • 2012-05-13
    • 2018-04-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 2017-10-28
    相关资源
    最近更新 更多