Как проверить равенство в шаблоне?

Это моя модель.

class Ad_company(models.Model):
    idx = models.AutoField(primary_key=True)
    subject = models.CharField(max_length=255)
    memo = models.CharField(max_length=255)
    content = models.TextField()
    is_display = models.CharField(max_length=1)
    writer = models.CharField(max_length=255)
    write_date = models.DateTimeField()
    update_date = models.DateTimeField()
    delete_date = models.DateTimeField()
    deadline_date = models.DateTimeField()
    reply = models.IntegerField(blank=True)
    hits = models.IntegerField(blank=True)
    ad_apply = models.IntegerField(blank=True)
    ad_category1 = models.CharField(max_length=255)
    ad_category2 = models.CharField(max_length=255)
    ad_place = models.CharField(max_length=255)
    ad_age = models.CharField(max_length=255)
    ad_sex = models.CharField(max_length=255)
    ad_budget = models.BigIntegerField()
    ad_length = models.CharField(max_length=255)
    is_done = models.CharField(max_length=1)
    is_pay = models.CharField(max_length=1)
    ad_service = models.CharField(max_length=255)
    ad_object = models.CharField(max_length=255)
    is_file = models.CharField(max_length=1)
    ad_require = models.CharField(max_length=255)
    contract_user = models.CharField(max_length=255, blank=True)

Это мое мнение

def MyDashBoard(request):
    usertype = request.user.type
    if usertype == 1: #파트너스일때
        q = Q()

        q &= Q(ad_company_apply__username = request.user)
        q &= Q(ad_company_apply__is_done=1)
        queryset =  Ad_company.objects.filter(q).order_by('-idx')
        count_is_done = queryset.count()

        total_done_price = queryset.aggregate(score=Coalesce(Sum('ad_budget'), 0))

        q = Q()

        q &= Q(ad_company_apply__username = request.user)
        queryset =  Ad_company.objects.filter(q).order_by('-idx')
        count = queryset.count()
        page        = int(request.GET.get('p', 1))
        pagenator   = Paginator(queryset, 4)
        adlist      = pagenator.get_page(page)
        return render(request, 'account/setting/dashboard_partners.html',{"adlist":adlist, "count":count, "count_is_done":count_is_done, "total_done_price":total_done_price})

А это код моего html-шаблона

{% if adlist.contract_user == user %}
<span class="ad-state full-time">contract</span>
{% endif %}

adlist.contract_user is asdf и user is asdf same

но это не работает.

Думаю, мне нужно изменить строку или что-то еще?

У меня была такая проблема раньше. но я справился сам. но эта проблема немного другая.

Проверьте правильность синтаксиса равенства, во время отладки вы можете отобразить переменную в HTML pass {{ adlist.contract_user }} AND {{ user }}, получите ожидаемое значение?

Решено {% if adlist.contract_user|stringformat: "i" == request.user|stringformat: "i" %}

>

Правильный режим - проверка первичного ключа пользователя:


class Ad_company(models.Model):
    contract_user = models.ForeingKey(User)
{% if adlist.contract_user.id == request.user.id %}

Однако, если в ваших моделях contract_user сохраняется имя пользователя, вы можете сравнить его с полем имени пользователя request.user.username:

{% if adlist.contract_user == request.user.username %}
Вернуться на верх