2010-05-21 8 views
19

को एक मानक मॉडल (छवि कहा जाता है) के साथ एक ऑटोसेट 'आईडी' के साथ चुनने के लिए, मैं अधिकतम आईडी कैसे प्राप्त करूं?Django अधिकतम आईडी

अब तक मैं कोशिश की है:

max_id = Image.objects.all().aggregate(Max('id')) 

लेकिन मैं एक 'id__max' कुंजी त्रुटि मिलती है।

कोशिश कर रहा

max_id = Image.objects.order_by('id')[0].id 

एक 'नक्शा करने के लिए तर्क 2() यात्रा का समर्थन करना चाहिए' देता है अपवाद

किसी भी मदद की?

+0

आप अधिकतम आईडी क्यों चाहते हैं? क्या आप आखिरी चीज लोड करना चाहते हैं? सबसे बड़ी तारीख के साथ बात? आईडी यादृच्छिक संख्याएं हैं, उनका अधिक मतलब नहीं है और इस बात की कोई गारंटी नहीं है कि अधिकतम (आईडी) में कोई उपयोगी गुण है। आप वास्तव में क्या करने की कोशिश कर रहे हैं? –

+0

http://stackoverflow.com/questions/2087670/how-to-aggregate-over-a-single-queryset-in-django –

उत्तर

32

बस रिवर्स आईडी द्वारा ऑर्डर करें, और शीर्ष पर जाएं।

Image.objects.all().order_by("-id")[0] 
48

Django (1.4) के वर्तमान संस्करण में तो यह और भी अधिक पठनीय

Image.objects.latest('id').id

+1

यदि कोई ऑब्जेक्ट नहीं है तो यह एक छवि फेंक देगा। DoesNotExist अपवाद – Necrolyte2

+3

हाँ और पिछला उत्तर होगा इस मामले में इंडेक्स एरर बढ़ाएं। – Raz

+0

यह केवल दिनांक फ़ील्ड –

2

आपका तर्क सही है, इस अधिकतम आईडी वापस आ जाएगी

res = Image.objects.filter().aggregate(max_id=Max('pk')) 
res.get('max_id') 
6

मैं यह जानता हूँ पहले से ही एक सही जवाब है लेकिन यहां यह करने का दूसरा तरीका है:

prev = Image.objects.last() 

यह आपको अंतिम वस्तु देता है।

+1

मुझे लगता है कि यह सबसे अच्छा जवाब है। यह निश्चित रूप से सबसे आसान है। – wanderer0810

संबंधित मुद्दे