Django:比较模板中的字符串时出现问题

时间:2019-04-05 18:50:07

标签: django django-templates

我正在做一个简单的{% if %}比较,但是无法获得匹配的字符串。

{% if request.user.username == empresa.vendedor|stringformat:"s" %}

我检查了课程,并且:

request.user.username<class 'str'>

empresa.vendedor|stringformat:"s"<class 'str'>

我打印一个案子,并且:

request.user.usernameMariano

empresa.vendedor|stringformat:"s"Mariano

在模型中

empresa.vendedorvendedores.nombre

的外键
class empresa(models.Model):
    ..... other fields ......
    Vendedor = models.ForeignKey("Vendedores", help_text="Estatus del contenido", blank=True, null=True, on_delete=models.CASCADE)

    class Meta:
        ordering = ['Nombre']

    def __str__(self):
        return str(self.Nombre)

class Vendedores(models.Model):
    nombre = models.CharField(max_length=200, help_text="Nombre", blank=False, null=True)
    apellido = models.CharField(max_length=200, help_text="Apellido", blank=False, null=True)

    def __str__(self):
        return str(self.nombre)

也尝试过

{% if empresa.vendedor|stringformat:"s" in request.user.username %}
{% if request.user.username in empresa.vendedor|stringformat:"s" %}
{% if request.user.username == empresa.vendedor %}
{% if empresa.vendedor == request.user %}

我在这里想念什么?预先感谢。

3 个答案:

答案 0 :(得分:0)

您是否尝试过

> update 9 1 [3,4,5] Just [3,9,5] > update 4 2 [3,4,5] Just [3,4,4] > update 6 5 [3,4,5] Nothing

按位'或'({% if request.user.username == (empresa.vendedor|stringformat:"s") %})的优先级低于|。参见https://docs.python.org/3/reference/expressions.html#operator-precedence

好的,所以Django的模板语言是 not python,我找不到模板语言中的表达式的良好参考。抱歉,这里什么也看不见,继续前进。

答案 1 :(得分:0)

如何使用with指令? 我认为问题在于我们不能在条件内使用管道指令。

{% with empresa.vendedor|stringformat:"s" as data %}
  {% if request.user.username == data %}
  // do something
  {% endif %}
{% endwith %}

我曾经遇到过类似的问题,并且通过此解决方案得以解决。 我希望它能起作用。

答案 2 :(得分:0)

I discovered a typo I was using empresa.vendedor and it should have been Vendedor due to a legacy database. Sorry and thanks to all.