2012-01-02 61 views
1

我是Django/Python中的初學者。檢索Django中日期時間列的日期部分

我有一個模型MyModel。它有許多字段datetime,char,integer類型。現在,我需要一個值列表,其中包含僅包含日期部分的日期時間字段的值。

我嘗試過使用日期函數[參考](https://docs.djangoproject.com/en/1.2/ref/models/querysets/#dates),但它只適用於一個字段。我有多個日期時間字段,都必須以所需格式檢索。

基本上,我想一個Django相當於:

select stringfield1, date(datefield1), integerfield1, date(datefield2) from mymodel;(PostgreSQL系統)

這甚至可能嗎?如果是這樣,我應該如何繼續下去?

回答

1

我不確定Django是否有內置的方法來做到這一點。你可以使用itertools.imap有問題的領域懶洋洋地轉換成date對象:

from itertools import imap 
values = MyModel.objects.values_list('stringfield1', 'datefield1', 
             'integerfield1', 'datefield2') 
values = imap(lambda (s, d1, i, d2): (s, d1.date(), i, d2.date()), values) 

(但請注意,在這之後你不處理一個ValuesListQuerySet了,但與itertools.imap對象。)

+0

感謝名單了很多爲你的努力。我必須將生成的查詢集作爲JSON的一部分進一步傳遞。因此,必須將其保留爲由查詢集返回的值列表。我可以專門做這個嗎? – 2012-01-02 10:28:29

+0

不是直接的 - 如果你只是打算使用'json.dump'什麼的,使用'itertools.imap'並不重要 - 內建的'map'可以很好的返回一個列表。 – 2012-01-02 10:41:29