Django模板中的if语句不起作用

新手

我不知道为什么这不起作用。它总是转到{%else%}块。machine_model中的文本类似于“ Lidl-Food Market”或“ Kaufland-Buy Here”或其他没有这两个词的文本。

models.py

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django import forms
from django.urls import reverse


class MyName(models.Model):
    name = models.CharField(max_length=50, unique=True)

    def __str__(self):
        return self.name

class MyModel(models.Model):
    name = models.CharField(max_length=50, unique=True)

    def __str__(self):
        return self.name

class MySide(models.Model):
    name = models.CharField(max_length=50, unique=True)


class MyMachine(models.Model):
    date_delivery = models.DateTimeField(null=True)
    machine_name = models.ForeignKey(MyName, on_delete=models.PROTECT)
    machine_model = models.ForeignKey(MyModel, on_delete=models.PROTECT)
    machine_serial = models.CharField(max_length=15, default='0')
    use_side = models.ForeignKey(MySide, on_delete=models.PROTECT)

views.py

from django.views.generic import ListView
from .models import MyMachine

class MyMachineListView(ListView):
    model = MyMachine
    template_name = 'site/home.html'
    context_object_name = 'machines'
    ordering = ['date_delivery']

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        site_title = 'Home'
        context["site_title"] = site_title
        return context

home.html

{% extends "site/base.html" %}
{% load static %}
{% block content %}
    {% for machine in machines %}
            <article class="media content-section">
                <div class="media-body">
                    <div class="article-metadata">
                        <small class="text-muted">{{ machine.date_delivery|date:"d.F Y" }} 
                        </small>  
                    </div>
                        <h2><a class="article-title" href="">{{ machine.machine_name }} - {{ machine.machine_serial }}</a></h2>

                        {% if 'Lidl' in machines.machine_model %}
                            <p class="article-content">{{ machine.use_side }} - Lidl</p>
                        {% elif 'Kaufland' in machines.machine_model %}
                            <p class="article-content">{{ machine.use_side }} - Kaufland</p>
                        {% else %}
                            <p class="article-content">{{ machine.use_side }} - {{ machine.machine_model}}</p>
                        {% endif %}

                </div>
            </article>
    {% endfor %}
{% endblock content %}

其他一切都很好。先感谢您!

彼得·德格洛珀

我在这里看到两个问题。

一,您正在引用machines.machine_model,但它machines是一个查询集。我对此感到惊讶machine_model,因为它不仅会因为渲染错误而失败。应该是machine.machine_model,因为这是您的循环变量。

这导致我们遇到第二个问题。machine.machine_model是对另一个模型的外键引用,而不是字符串。没有字符串in是模型实例(除非自己定义成员函数)。我尚未进行个人测试,但我认为Django不会即时进行字串化(如您所参考{{ machine.machine_model }})。尝试一下if ... in machine.machine_model.name

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django If语句在模板中不起作用

来自分类Dev

Django的if语句不起作用

来自分类Dev

模板中的href和网址在Django中不起作用

来自分类Dev

django-smart-selects在模板中不起作用

来自分类Dev

Django MEDIA_URL在模板中不起作用

来自分类Dev

Jinja2模板在Django 1.9中不起作用

来自分类Dev

如果Django模板中的条件不起作用

来自分类Dev

语义UI在Django的模板文件中不起作用

来自分类Dev

Jinja2模板在Django 1.9中不起作用

来自分类Dev

{{ user }} 在我的 Django 模板中不起作用

来自分类Dev

Jquery tablesorter 插件在 Django 模板中不起作用

来自分类Dev

在 Django 模板中显示单个图像字段不起作用?

来自分类Dev

Django模板过滤日期不起作用

来自分类Dev

Django 1.9.4模板继承不起作用

来自分类Dev

Django模板内联jQuery不起作用

来自分类Dev

使用Django扩展模板不起作用

来自分类Dev

Django模板视图类不起作用

来自分类Dev

DJANGO DATATABLES模板不起作用

来自分类Dev

UPDATE语句在sqlite中不起作用

来自分类Dev

ONESHELL Makefile中的if语句不起作用

来自分类Dev

简单的bash中的if语句不起作用

来自分类Dev

如果语句在cron中不起作用

来自分类Dev

如果语句在函数中不起作用

来自分类Dev

返回语句在Java中不起作用?

来自分类Dev

如果语句在WordPress中不起作用

来自分类Dev

条件语句在php中不起作用

来自分类Dev

switch语句在javascript中不起作用

来自分类Dev

UPDATE语句在sqlite中不起作用

来自分类Dev

如果语句在函数中不起作用