मेरे पास टेम्प्लेट का एक सेट था जो सभी एक ही ऑब्जेक्ट_लिस्ट से शुरू होते हैं। पहली (समीक्षा_सूची) वस्तु सूची में प्रत्येक आइटम को प्रदर्शित करती है। उनमें से बाकी एक विशेषता के आधार पर वस्तुओं का एक सबसेट प्रदर्शित करते हैं: {% 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> ·
<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)])
1 उत्तर
चूंकि आपने मॉडल बदल दिए हैं, इसलिए आपको उसी तरह टेम्पलेट को अपडेट करना होगा (एक और लाइब्रेरी विशेषता जोड़ें)।
यह अब काम करना चाहिए:
{% if review.library.library == 'TV' %}
ध्यान दें, भले ही आपने एक __str__
फ़ंक्शन लागू किया हो, इसे इस तुलना के लिए टेम्पलेट में नहीं कहा जाता है (लेकिन एक प्रिंट फ़ंक्शन वांछित आउटपुट दिखाएगा)।
संबंधित सवाल
नए सवाल
django
Django एक ओपन-सोर्स सर्वर-साइड वेब एप्लीकेशन फ्रेमवर्क है जिसे पायथन में लिखा गया है। यह कम कोड, विशेष-अतिरेक पर विशेष ध्यान देने और निहित से अधिक स्पष्ट होने के साथ जटिल डेटा-संचालित वेबसाइटों और वेब एप्लिकेशन बनाने के लिए आवश्यक प्रयास को कम करने के लिए डिज़ाइन किया गया है।