मेरे पास टेम्प्लेट का एक सेट था जो सभी एक ही ऑब्जेक्ट_लिस्ट से शुरू होते हैं। पहली (समीक्षा_सूची) वस्तु सूची में प्रत्येक आइटम को प्रदर्शित करती है। उनमें से बाकी एक विशेषता के आधार पर वस्तुओं का एक सबसेट प्रदर्शित करते हैं: {% if review.library == "Movies" %}

यह तब तक ठीक रहा जब तक मैंने समीक्षा मॉडल को नहीं बदला। जहां library एक चारफिल्ड हुआ करता था, अब यह एक फॉरेनकी है, हालांकि फ़ील्ड का नाम नहीं बदला। समीक्षा_सूची अभी भी ठीक से प्रस्तुत होती है लेकिन अन्य सभी टेम्पलेट खाली दिख रहे हैं। मैंने निम्नलिखित दोनों की कोशिश की है और सब कुछ अभी भी खाली है।

एक स्ट्रिंग के रूप में library के pk पर: {% if review.library == "1" %}

एक int के रूप में library के pk पर: {% if review.library == 1 %}

मैंने माइग्रेशन करने से पहले डेटाबेस को मिटा दिया था, फिर पुन: पॉप्युलेट किया गया था, इसलिए कोई अजीब डेटा समस्या नहीं होनी चाहिए।

टेम्प्लेट बहुत छोटा है, इसलिए इसे नीचे चिपकाया जा रहा है। मैं किसी फ़ील्ड के मान के आधार पर टेम्पलेट में प्रदर्शित करने के लिए आइटम कैसे प्राप्त कर सकता हूं जो एक fk है? धन्यवाद

{% extends 'base.html' %}
{% block title %}TV Reviews{% endblock title %}

{% block content %}
<h1 class="jumbotron-fluid">List Of TV Reviews</h1>
    {% for review in object_list %}
        {% if review.library == 'TV' %} <!-- This is the relevant line -->
            <div class="card">
                <a href="{% url 'review_detail' review.pk %}"><div class="card-header">
                    <span class="font-weight-bold">
                        {{ review.title }}
                </span> &middot;
                    <span class="text-muted">by {{ review.author }} | {{ review.date }}</span>
                </div></a>
                <div class="card-body">
                    {{ review.review_body }}
                </div>
                {% if user == review.author %}
                <div class="card-footer text-center text muted"><a
                        href="{% url 'review_edit' review.pk %}">Edit</a>
                    | <a
                        href="{% url 'review_delete' review.pk %}">Delete</a>
                </div>
                {% endif %}
            </div>
            <br />
        {% endif %}
    {% endfor %}
    <div align="center"><a href="{% url 'review_list' %}"><button type="button"
                                                 class="btn btn-info">Back to
    Main List</button></a></div>
{% endblock content %}

यदि यह प्रासंगिक है, तो नीचे मॉडल हैं:

class Library(models.Model):
    library = models.CharField(max_length=200)
    lib_desc = models.TextField(null=True)

    def __str__(self):
        return self.library

class Review(models.Model):
    library = models.ForeignKey(Library, on_delete=DO_NOTHING,)
    title = models.CharField(max_length=200)
    review_body = models.TextField(null=True)
    date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(get_user_model(), on_delete=DO_NOTHING,)

    def __str__(self):
        return self.title

    def get_absolute_url(self):
        return reverse('review_detail', args=[str(self.id)])
0
JayCo741 15 जिंदा 2021, 21:09

1 उत्तर

सबसे बढ़िया उत्तर

चूंकि आपने मॉडल बदल दिए हैं, इसलिए आपको उसी तरह टेम्पलेट को अपडेट करना होगा (एक और लाइब्रेरी विशेषता जोड़ें)।

यह अब काम करना चाहिए:

{% if review.library.library == 'TV' %} 

ध्यान दें, भले ही आपने एक __str__ फ़ंक्शन लागू किया हो, इसे इस तुलना के लिए टेम्पलेट में नहीं कहा जाता है (लेकिन एक प्रिंट फ़ंक्शन वांछित आउटपुट दिखाएगा)।

0
dacx 16 जिंदा 2021, 00:11
उत्तम! धन्यवाद!
 – 
JayCo741
16 जिंदा 2021, 00:19