所以我得到了这个
{% if articulo.Tipos == sth.tipo %}
Equal
{% else %}
Not Equal
{% endif %}
但即使字段具有相同的值,它也不会返回true。 顺便说一句,articulo.Tipo是sth.tipo的外键,任何想法为什么它不能正常工作?
型号:
class Productos(models.Model):
tipo = models.ForeignKey("TiposOpciones", null=True, blank=True, related_name='Productos_tipo')
class TiposOpciones(models.Model):
Tipos = models.CharField(max_length=50, null=True)
查看:
tiposopciones = TiposOpciones.objects.all()
productos = Productos.objects.all()
答案 0 :(得分:1)
要调试此类情况,可以方便地在模板中显示您比较的值:
articulo.Tipos = '{{ articulo.Tipos }}'<br>
sth.tipo = '{{ sth.tipo }}'<br>
{% if articulo.Tipos == sth.tipo %}
Equal
{% else %}
Not Equal
{% endif %}
此外,如果您比较实例,最好比较他们的ID :
{% if articulo.Tipos.id == sth.tipo.id %}
答案 1 :(得分:0)
尝试使用 ifequal
{% ifequal articulo.Tipos sth.tipo|slugify %}
Equal
{% else %}
Not Equal
{% endifequal %}
我也建议检查两者的数据类型!
编辑:
你可以使用add filter
将str强制转换为int{% for item in numItems|add:"0" %}
https://docs.djangoproject.com/en/dev/ref/templates/builtins/#add
强制int to str只使用slugify
{{ some_int|slugify }}
答案 2 :(得分:0)
这就是您要做的
{% if articulo.id == sth.tipo.id %}
Equal
{% else %}
Not Equal
{% endif %}
sth.tipo实际上是一个对象,您正在将字符与对象进行比较。您在管理面板中看到相同值的原因是,在您使用的TiposOpciones模型中
def __str__(self):
return self.Tipos
这将返回Tipos字符串值,但实际上sth.tipo是对象。尝试在控制台中打印tipo值,它将显示类似
Productous Object(id)
是对象,因此在您的情况下,字符(Tipos)与TiposOpciones的对象(tipos)进行了比较。您希望将其与id进行比较,因为一旦拥有主键,它就可以作为主键使用,您可以将任何其他字段值用作垃圾对于那个例子