मेरे पास एक छोटा ब्लॉग और उपयोगकर्ता प्रोफाइल है। उपयोगकर्ता प्रोफ़ाइल पृष्ठ पर, मैं जानकारी प्रदर्शित करता हूं:
Comments count of this user;
Posts count of this user;
मैं इस तरह टेम्पलेट उपयोगकर्ता प्रोफ़ाइल में टिप्पणियों की संख्या प्रदर्शित करता हूं:
{{user.comments.count}}
मैं एक छोटी रेटिंग प्रणाली बनाना चाहूंगा, उदाहरण के लिए:
यदि किसी उपयोगकर्ता ने 10 टिप्पणियाँ और 10 पोस्ट छोड़ी हैं - तो वह एक बिल्ली है (बिल्ली शब्द)।
अगर 20 कुत्ता है (कुत्ता - शब्द)।
30 - हाथी, आदि।
इसके लिए मैं डेटाबेस में एक अलग टेबल रखना चाहता हूं, ताकि मैं उपयोगकर्ता रेटिंग द्वारा चयन कर सकूं।
मैं इसे कैसे कार्यान्वित कर सकता हूं?
1 उत्तर
इस पोस्ट पर एक नज़र डालें: Python में शब्दकोश कुंजी के रूप में श्रेणी
एक अलग model
बनाना और उपयोगकर्ता titles
को एक संबंध के रूप में निर्दिष्ट करना कई डेटाबेस संक्रमणों का मार्ग प्रशस्त करेगा, यहां आप count
के साथ उपयोगकर्ता posts
के मूल्य को हड़प सकते हैं और फिर एक कस्टम मेड डिक्शनरी का उपयोग range
ऑब्जेक्ट के साथ एक कुंजी के रूप में करें ताकि वह सही कर सके title
अपडेट करें
लागू करने के लिए आप ऐसा कुछ करेंगे:
def user(request, pk):
user = User.objects.get(pk=pk)
count_of_posts = user.posts.count()
titles = {
range(1, 10): 'Cat',
range(10, 20): 'Dog',
range(20, 30): 'Elephant'
# add more titles
}
user_title = ''
for key in titles:
if count_of_posts in key:
user_title = titles[key]
return render(request, 'user.html', {'user': user,
'user_title': user_title})
अपडेट 2
ठीक है क्योंकि आप किसी उपयोगकर्ता सूची में टैग जोड़ना चाहते हैं, इसके लिए वास्तव में एक User
मॉडल में इसके लिए एक अलग फ़ील्ड बनाने और हर बार user
बनाने या जानकारी के साथ इसे अपडेट करने के अलावा कोई रास्ता नहीं है। एक post
को हटाता है, मैं इसे इस तरह से काम करता हुआ देख रहा हूं:
1.अपने उपयोगकर्ता मॉडल में शीर्षक फ़ील्ड जोड़ें।
models.py
class User(models.Model): # your user model with your inheritance, disregard the 'models.Model' part, its just an example
# your User model fields
title = models.CharField('Title', max_length=50)
२. अपने दृश्यों में जब आप एक पोस्ट बनाते हैं (या हटते हैं), तो वर्तमान उपयोगकर्ता पोस्ट की जांच करें गिनती और यदि मान बदल गया है तो नया शीर्षक असाइन करें और इसे सहेजें।
views.py
titles = { # add this dictionary seperately in your views file
range(1, 10): 'Cat',
range(10, 20): 'Dog',
range(20, 30): 'Elephant'
# add more titles
}
def index(request): # the view that handles post creation
if request.method == 'POST':
form = PostForm(request.POST) # your post form class
if form.is_valid():
new_post = form.save(commit=False)
new_post.user = request.user
new_post.save()
count_of_posts = request.user.posts.count()
for key in titles: # assign a title to the user and save it
if count_of_posts in key:
if request.user.title != titles[key]:
request.user.title = titles[key]
request.user.save()
else:
form = PostForm()
return render(request, 'index.html', {'form': form})
def delete_post(request):
# create a similar check but call it when deleting a post
def user_list(request): #template below
users = User.objects.all()
return render(request, 'user_list.html', {'users', users})
def user(request, pk): # template below
user = User.objects.get(pk=pk)
return render(request, 'user.html', {'user': user})
3. अपने टेम्पलेट्स बनाएं।
user_list.html
{% for user in users %}
{{ user }} is a {{ user.title }}
{% endfor %}
user.html
{{ user }} is a {{ user.title }}
संबंधित सवाल
जुड़े हुए प्रश्न
नए सवाल
django
Django एक ओपन-सोर्स सर्वर-साइड वेब एप्लीकेशन फ्रेमवर्क है जिसे पायथन में लिखा गया है। यह कम कोड, विशेष-अतिरेक पर विशेष ध्यान देने और निहित से अधिक स्पष्ट होने के साथ जटिल डेटा-संचालित वेबसाइटों और वेब एप्लिकेशन बनाने के लिए आवश्यक प्रयास को कम करने के लिए डिज़ाइन किया गया है।
Update 2
अनुभाग देखें :)