नमस्ते मेरे पास एक एप्लिकेशन है जो एक काउंटर को अपडेट करके खोजे गए शब्दों की जांच और गणना करता है यदि क्वेरी पहले ही खोजी जा चुकी है और यदि क्वेरी नई है तो काउंटर = 1 के साथ एक फ़ील्ड सम्मिलित करता है।
खोज काउंटर मॉडल:
class Search(models.Model):
term = models.CharField(unique=True, max_length=255)
counter = models.IntegerField()
last_search = models.DateTimeField()
और एक दृश्य जिसमें यह शामिल है:
# update search counter with term
try:
term = Search.objects.get(term=query)
except Search.DoesNotExist:
term = None
if term:
term.counter = F('counter') + 1
term.last_search = datetime.now()
else:
term = Search(
term=query,
counter=1,
last_search = datetime.now()
)
term.save()
मेरा प्रश्न वास्तव में है - क्या ऐसा करने का यह एक अच्छा तरीका है और क्या इसे रखने का एक और संक्षिप्त तरीका है? यह मेरे लिए अत्यधिक बदसूरत लगता है, और एक Django नौसिखिया होने के नाते मैं इसका 'सर्वोत्तम अभ्यास' कार्यान्वयन देखना चाहता हूं। किसी भी उत्तर की सराहना की।
1 उत्तर
यहां एक अधिक संक्षिप्त संस्करण है (आपको काउंटर फ़ील्ड पर "डिफ़ॉल्ट = 0" सेट करने की आवश्यकता हो सकती है):
try:
term = Search.objects.get(term=query)
except Search.DoesNotExist:
term = Search(term=query)
term.counter += 1
term.last_search = datetime.now()
term.save()
आपको कंस्ट्रक्टर में सभी मान सेट करने की आवश्यकता नहीं है - जब तक कि वे सभी वहां मौजूद हैं जब तक आप सहेजते हैं या मान्य करते हैं।
संबंधित सवाल
नए सवाल
django
Django एक ओपन-सोर्स सर्वर-साइड वेब एप्लीकेशन फ्रेमवर्क है जिसे पायथन में लिखा गया है। यह कम कोड, विशेष-अतिरेक पर विशेष ध्यान देने और निहित से अधिक स्पष्ट होने के साथ जटिल डेटा-संचालित वेबसाइटों और वेब एप्लिकेशन बनाने के लिए आवश्यक प्रयास को कम करने के लिए डिज़ाइन किया गया है।