Как пропустить пустой элемент в колонке в Django DB
Я новичок в изучении Django и столкнулся с небольшой проблемой: Я работаю над страницей отображения продуктов, где некоторые продукты находятся в подкатегории. Я хочу иметь возможность отображать эту подкатегорию, когда это необходимо, но я не хочу, чтобы она отображалась, когда не используется. Сейчас она отображается на моей странице как 'NONE', чего я не хочу. Как мне это исправить?
Моя модель выглядит следующим образом:
class Category(models.Model):
category_name = models.CharField(max_length=200)
sub_category = models.CharField(max_length=200,blank=True,null=True)
def __str__(self):
return f" {self.category_name} {self.sub_category}"
На моей веб-странице я использую {{category}}
в цикле for для отображения различных категорий. К сожалению, он показывает 'NONE', когда нет подкатегории.
Я пробовал следующее:
{% for category in categories %}
<p>
{% if category.sub_category == "NULL" %}
{{category.category_name}}
{% else %}
{{category}}
{% endif %}
</p>
{% endfor %}
Если значение NULL
на стороне базы данных, оно будет None
на стороне Django/Python, поэтому вы можете работать с:
{% for category in categories %} <p> {% if category.sub_category is None %} {{ category.category_name }} {% else %} {{ category }} {% endif %} </p> {% endfor %}
Но вместо этого, более разумно исправить это в самой модели:
class Category(models.Model):
category_name = models.CharField(max_length=200)
sub_category = models.CharField(max_length=200, blank=True, null=True)
def __str__(self):
if self.sub_category is None:
return self.category_name
else:
return f'{self.category_name} {self.sub_category}'
Это упрощает рендеринг до:
{% for category in categories %} <p> {{ category }} </p> {% endfor %}