2016-04-29 4 views
0

私のモデルにはdate_updatedフィールドがあります。 date_updatedの時間が最も古かったり、空白のオブジェクトを取得したいのですが これを最も効果的な方法で実行するにはどうすればよいですか?djangoのフィールドでもっとも早いオブジェクトを取得します

class Product(models.Model): 
    date_updated = models.DateTimeField(auto_now_add=False, auto_now=True, null=True) 
    date_added = models.DateTimeField(auto_now_add=True, auto_now=False) 
+0

あなたのオブジェクトの他のモデルを共有できますか? – onkar

+0

モデルのコードですか? –

+0

はい、特定のモデルのフィールドを共有してください – onkar

答えて

0

あなたが優先順位でNoneある要素をしたい場合は、あなたがqueryset method .latest([field])を使用することができます。

YourModel.objects.latest('date_updated') 

それはあなたのメタモデルに設定されたデフォルトの順序で最新の日付、または最初のものを(返されますが)少なくとも1つがnullの場合

+0

これは、このような種類のクエリを実行する適切な方法のように見えますか? –

+0

私の場合は「最も早い」方法でしょう。 –

0

oldest_date = YourModel.objects.all().order_by("-date_updated")[0]

しかし、私はこれがNULL値で動作するかどうかはわかりませんよ。あなたがそれらを別々に扱うことができることを確認するには:

oldest_date = YourModel.objects.exclude(date_updated=None).order_by("-date_updated")[0] 

never_updated = YourModel.objects.filter(date_updated=None) 
0

さてを、あなたは最も古い取得するFoo.objects.all().order_by('-date_updated').last()を使用することができます。しかしnull /空白のオプションは、特定の順序で複数のオブジェクトを返す可能性があるため、問題を提示します。私はあなたがちょうど1つを選ぶことができると思います。

これまでに更新されていないものも含めて、最も古いものを取得しようとしている場合は、オブジェクトを作成するときにdate_updateNOW()に設定することができます。

関連する問題