मेरे पास एक छोटा ब्लॉग और उपयोगकर्ता प्रोफाइल है। उपयोगकर्ता प्रोफ़ाइल पृष्ठ पर, मैं जानकारी प्रदर्शित करता हूं:

Comments count of this user; 
Posts count of this user;

मैं इस तरह टेम्पलेट उपयोगकर्ता प्रोफ़ाइल में टिप्पणियों की संख्या प्रदर्शित करता हूं:

{{user.comments.count}}

मैं एक छोटी रेटिंग प्रणाली बनाना चाहूंगा, उदाहरण के लिए:

यदि किसी उपयोगकर्ता ने 10 टिप्पणियाँ और 10 पोस्ट छोड़ी हैं - तो वह एक बिल्ली है (बिल्ली शब्द)।
अगर 20 कुत्ता है (कुत्ता - शब्द)।
30 - हाथी, आदि।

इसके लिए मैं डेटाबेस में एक अलग टेबल रखना चाहता हूं, ताकि मैं उपयोगकर्ता रेटिंग द्वारा चयन कर सकूं।

मैं इसे कैसे कार्यान्वित कर सकता हूं?

0
new_progger_python 2 जिंदा 2021, 01:31

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 }}
1
SLDem 2 जिंदा 2021, 12:50
टिप के लिए धन्यवाद, अगर आप सिंटैक्स के साथ मेरी मदद कर सकते हैं तो बहुत आभारी होंगे
 – 
new_progger_python
2 जिंदा 2021, 01:46
अद्यतन संस्करण देखें, यह काम करना चाहिए
 – 
SLDem
2 जिंदा 2021, 01:52
बहुत बहुत धन्यवाद, क्या आप कृपया मुझे बता सकते हैं कि मैं इसे टेम्पलेट में कैसे प्रदर्शित कर सकता हूं? (टैग) और मैं एक अलग पृष्ठ पर रेटिंग के आधार पर उपयोगकर्ताओं की सूची कैसे प्रदर्शित कर सकता हूं?
 – 
new_progger_python
2 जिंदा 2021, 02:35
1
मैंने अपना उत्तर अपडेट कर दिया है, Update 2 अनुभाग देखें :)
 – 
SLDem
2 जिंदा 2021, 12:51
आपके विस्तृत उत्तर के लिए बहुत-बहुत धन्यवाद! जैसे ही मैं कंप्यूटर पर पहुँचता हूँ, मैं निश्चित रूप से आपके उदाहरण के अनुसार इसे लागू करने का प्रयास करूँगा।
 – 
new_progger_python
2 जिंदा 2021, 14:54