简体   繁体   English

比较上下文变量 django

[英]Compare context variable django

How can I compare context variable in Django?如何比较 Django 中的上下文变量? I want to compare the name that I have saved in my model with request.user我想将我保存在 model 中的名称与request.user进行比较

{% if user %}
  {% for x in user %}
    {% ifequal x request.user %}
      <h1>working</h1>
    {% else %}
      <h1>false</h1>
    {% endifequal %}
  {% endfor %}
{% endif %}

I want the following comparison: {{x}} == {{request.user}}我想要以下比较: {{x}} == {{request.user}}

Context dict上下文字典

{"user": Prod.objects.filter().values_list('name', flat=True)}

User is here for example admin and request.user is also admin用户在这里例如admin和 request.user 也是admin

My model:我的 model:

class Prod(models.Model):
    description = models.CharField(max_length=300)
    price = models.DecimalField(max_digits=6, decimal_places=2)
    name = models.ForeignKey(User, on_delete=models.CASCADE)

Loop环形

I am using a context processor in the base.html我在 base.html 中使用上下文处理器

from farmer_page.models import Prod
def context_variable(request):
    # .values_list('name', flat=True)
    return {"user": Prod.objects.filter()}

Use if template tag in your templates:在模板中使用if 模板标签

{% if x == request.user %}

Edit编辑

{% if user %}
  {% for x in user %}
    {% if x.name == request.user %}
      <h1>working</h1>
    {% else %}
      <h1>false</h1>
    {% endif %}
  {% endfor %}
{% endif %}

Context dict:上下文字典:

{"user": Prod.objects.filter(condition)}

template模板

 {% if request.user in user %}
<h1>success</h1>
{% else %}
<h1>failed</h1>
{% endif %}

---------Edit---------- - - - - -编辑 - - - - -

Always use related name in Foreign key始终在外键中使用相关名称

class Prod(models.Model):
    .
    .
    name = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_name')

views.py视图.py

{"user": Prod.objects.filter(condition)}

html template html模板

{% if request.user.user_name in user %}
    <h1>success</h1>
    {% else %}
    <h1>failed</h1>
    {% endif %}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM