【问题标题】:Django if statement in DetailView returns FalseDetailView 中的 Django if 语句返回 False
【发布时间】:2016-01-10 11:28:10
【问题描述】:

对我来说主要的问题是:如果用户是 prime 的所有者,那么它应该返回 True。但它总是返回 False

我的models.py:

from django.db import models
from django.contrib.auth.models import User
from django.core.urlresolvers import reverse


class Prime(models.Model):
    prime_owner = models.ForeignKey(User, null=True)
    prime_name = models.CharField(max_length=100)
    prime_address = models.CharField(max_length=250)

我的意见.py:

class PrimeDetails(generic.DetailView):
    template_name ='prime/primedetails.html'
    model = Prime


    def get_context_data(self, **kwargs):
        context = super(PrimeDetails, self).get_context_data(**kwargs)
        user = self.request.user
        prime_owner = Prime.prime_owner
        if user == prime_owner:
            owner = True
        else:
            owner = False
        context['owner'] = owner
        return context

primedetails.html

{% extends 'prime/base.html' %}

{% block content %}
<div class="container">
    <h1>{{ owner }}</h1>
    <h1>{{object.prime_name }}</h1>
    <h3>{{object.prime_address}}</h3>
</div>
{% endblock %}

【问题讨论】:

    标签: django if-statement django-models django-views django-users


    【解决方案1】:

    Prime 是一个模型,而不是对象。
    尝试将 Prime 更改为 self.get_object(),如下所示:

     def get_context_data(self, **kwargs):
            context = super(PrimeDetails, self).get_context_data(**kwargs)
            user = self.request.user
            prime_owner = self.get_object().prime_owner
            if user == prime_owner:
                owner = True
            else:
                owner = False
            context['owner'] = owner
            return context
    

    【讨论】:

    • 是的,这正是我错过的。非常感谢你的朋友
    • 不客气:),如果答案解决了问题,请标记为正确答案。
    • 我会的,但你回答得太快了,我还需要 5 分钟才能回答完
    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 2020-08-09
    • 1970-01-01
    • 1970-01-01
    • 2010-11-17
    相关资源
    最近更新 更多