1

Основная проблема для меня: если пользователь является владельцем прайса, тогда он должен вернуть True. Но он всегда возвращает False.Оператор Django if в DetailView возвращает 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) 

Мой views.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 %} 

ответ

4

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 
+1

Да точно это то, что я пропустил. большое спасибо приятелю –

+1

приветствуется :), если ответ решил проблему, отметьте ее как правильный ответ. –

+1

Я буду, но вы ответили так быстро, мне все еще нужно 5 минут, пока я не смогу –

Смежные вопросы