过滤models textfield中的最新文本条目,并将其解析到列表中

2024-10-02 00:23:30 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个模型:

class TrademarkModel(models.Model):
    description = models.TextField(null=True)
    created = models.DateTimeField(auto_now_add=True)

    class Meta:
        ordering = ("-created", )

我不想使用filter最新的description条目,我想将它解析到列表中,这样我就可以对xml运行该列表并进行一些额外的计数。 我在做这样的事

result = TrademarkModel.objects.values()
list_values = [entry for entry in result]
return list_values

结果是:

[{'created': datetime.datetime(2017, 7, 24, 11, 58, 14, 30162, tzinfo=<UTC>),
  u'id': 6,
  'description': u'c'},
 {'created': datetime.datetime(2017, 7, 24, 11, 57, 22, 674450, tzinfo=<UTC>),
  u'id': 5,
  'description': u'Test'},
 {'created': datetime.datetime(2017, 7, 24, 11, 55, 14, 376727, tzinfo=<UTC>),
  u'id': 4,
  'description': u'Test'},
 {'created': datetime.datetime(2017, 7, 24, 11, 32, 31, 4703, tzinfo=<UTC>),
  u'id': 3,
  'description': u'Non Building materials'},
 {'created': datetime.datetime(2017, 7, 24, 11, 31, 35, 244154, tzinfo=<UTC>),
  u'id': 2,
  'description': u'Testing'},
 {'created': datetime.datetime(2017, 7, 24, 7, 20, 29, 920155, tzinfo=<UTC>),
  u'id': 1,
  'description': u'Testing'}]

这并不理想,因为我需要对list_values进行额外的解析,以便获得最新的条目。你知道吗

我的问题是,从description中提取最新条目并将其解析到列表中最优雅的方法是什么?你知道吗


Tags: idtrue列表datetimemodels条目descriptionresult
2条回答

如果我正确理解了你的意图,理论上你也可以这样做

max(TrademarkModel.objects.values(), key=lambda d: d['created'])['description']

利用内置函数max中的key关键字参数按日期排序,然后抓住description.我对django完全不熟悉,所以我在这个意义上有偏见。我不知道values_list().latest()在时间上是如何比较的。我还没有测试过这个代码。。。你知道吗

有人建议,如果我想过滤掉description,我需要使用values_list,这也是从数据库返回所有条目,但这是一个例子

TrademarkModel.objects.all().values_list('description', flat=True).latest('created')

正在返回数据库中的最新条目,因此现在可以将其解析到列表中。你知道吗

相关问题 更多 >

    热门问题