2013-03-28 6 views
51

के साथ नवीनतम रिकॉर्ड प्राप्त करें मैं नवीनतम django मॉडल ऑब्जेक्ट प्राप्त करने का प्रयास कर रहा हूं लेकिन सफल होने के लिए प्रतीत नहीं होता।django - फ़िल्टर

obj= Model.objects.filter(testfield=12).latest() 

है और न ही

obj= Model.objects.latest().filter(testfield=12) 

काम कर रहा है।

कृपया मदद करें।

+2

आप की कोशिश की है: 'obj = मॉडल .objects.filter (testfield = 12) .order_by ('- id') [: 1] ' – catherine

+0

@c एथेरिन, एक आकर्षण की तरह काम कर रहा है! : डी। आप इसे उत्तर के रूप में लिखना चाहते हैं ताकि मैं इसे देख सकूं? – doniyor

+0

ठीक है धन्यवाद ... – catherine

उत्तर

54
obj= Model.objects.filter(testfield=12).order_by('-id')[0] 
+3

पोस्ट करता हूं किसी भी कारण से आपने '[0]' के बजाय '[: 1]' उपयोग किया है? – acjay

+3

@ acjohnson55 क्षमा करें मैं भूल गया, मैं फ़िल्टर का उपयोग करते समय हमेशा [: 1] का उपयोग करता हूं। सुधार के लिए धन्यवाद :) – catherine

+0

यह गलत है। नीचे प्रणव का जवाब देखें। –

12

latest वास्तव में तारीख क्षेत्रों के साथ काम करने के लिए डिज़ाइन किया गया है (शायद यह बहुत अन्य की कुल आदेश दिया प्रकार के साथ काम करता है, लेकिन यकीन है कि नहीं)। और फ़ील्ड नाम निर्दिष्ट किए बिना इसका उपयोग करने का एकमात्र तरीका get_latest_by मेटा विशेषता सेट करना है, जैसा कि here का उल्लेख किया गया है।

+4

लौटा सकता है यह प्राथमिक कुंजी के साथ काम करता है, आप हमेशा ऐसा कुछ कर सकते हैं: '' 'Model.objects.latest ('id')' ' – Ander

60

Django से डॉक्स देखें: https://docs.djangoproject.com/en/dev/ref/models/querysets/#latest

आप एक क्षेत्र नवीनतम में() निर्दिष्ट करने की आवश्यकता। जैसे।

obj= Model.objects.filter(testfield=12).latest('testfield') 

या अगर अपने मॉडल के मेटा get_latest_by निर्दिष्ट करता है, आप earliest() or latest() करने के लिए field_name तर्क बंद छोड़ सकते हैं। Django डिफ़ॉल्ट रूप से get_latest_by में निर्दिष्ट फ़ील्ड का उपयोग करेगा।

+2

क्या" testfield " एक तिथि क्षेत्र होना चाहिए? –

0

obj= Model.objects.filter(testfield=12).order_by('-id')[:1] सही समाधान

0

last()latest()

usign है पिछले():

ModelName.objects.last() 

का उपयोग कर नवीनतम():

ModelName.objects.latest('id') 
संबंधित मुद्दे