Я использую пользовательские модели пользователя с двумя сущностями:Не работает get_context_data в Django
class WeddyUser(AbstractBaseUser):
username = models.CharField(
'Юзернейм',
max_length=50,
unique=True,
db_index=True
)
email = models.EmailField(
'Электронная почта',
max_length=255,
blank=True,
null=True
)
is_vendor = models.BooleanField(
'Волшебник',
default=False
)
#other atributes and methodes
Этот класс наследуется двумя другими типами пользователей:
class Vendor(WeddyUser):
org_name = models.CharField('Название организации', max_length=50, blank=True)
slug = models.SlugField('Короткое название', unique=True)
city = models.ForeignKey(City, null=True, blank=True)
description = models.TextField('О себе', blank=True)
и
class PlainUser(WeddyUser):
date_of_birth = models.DateField('Дата рождения', null=True, blank=True)
favor_news = models.ManyToManyField('news.News', blank=True)
favor_pic = models.ManyToManyField('news.Photo', blank=True)
Я пытаюсь создать личную зону для этих пользователей:
в URLs:
url(r'^desktop/$', views.DesktopView.as_view(), name='desktop'),
в шаблоне:
"{% url 'desktop' %}"
в виду:
class LoginRequiredMixin(object):
@classmethod
def as_view(cls, **initkwargs):
view = super(LoginRequiredMixin, cls).as_view(**initkwargs)
return login_required(view)
class DesktopView(LoginRequiredMixin,DetailView):
model = WeddyUser
context_object_name = 'weddyuser'
def get_context_data(self, **kwargs):
context = super(DesktopView, self).get_context_data(**kwargs)
if self.request.user.is_vendor:
context['vendor']= Vendor.objects.get(id=self.request.user.id)
context['plainuser']= PlainUser.objects.get(id=self.request.user.id)
return context
def get(self, request, *args, **kwargs):
c = {}
c.update(csrf(request))
user = request.user
if user.is_vendor:
return render_to_response('user/vendor_edit_profile.html', RequestContext(request, c))
return render_to_response('user/user_edit_profile.html', RequestContext(request, c))
Но я не могу получить доступ к 'vendor'
или 'plainuser'
контекста объекты, а также 'weddyuser'
контекста тоже не работает. Я полагаю, моя функция прибудет делает шаблон без какого-либо контекста объекты
Вы не получают ключ в данных контекста, или вы получаете значения как None? –
Я не понимаю, откуда должно получиться свойство 'user.is_vendor'. – RemcoGerlich
У меня есть атрибут 'is_vendor = models.BooleanField (default = False)', извините, я не указал его –