I use custom user model with two entities:
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
This class is inherited by two other user types:
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)
and
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)
I try to build personal area for this types of user:
in urls:
url(r'^desktop/$', views.DesktopView.as_view(), name='desktop'),
in template:
"{% url 'desktop' %}"
in view:
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))
But, I can't get access to 'vendor'
or 'plainuser'
context objects, also 'weddyuser'
context also doesn't work. I suppose my get function renders template without any context objects
change this code,
context['vendor']= Vendor.objects.get(id=self.request.user.id)
context['plainuser']= PlainUser.objects.get(id=self.request.user.id)
to this,
context['vendor']= Vendor.objects.get(weddyuser_ptr_id=self.request.user.id)
context['plainuser']= PlainUser.objects.get(weddyuser_ptr_id=self.request.user.id)
Pass context data in return statement,
return render_to_response('user/vendor_edit_profile.html', self.get_context_data() ,RequestContext(request, c))
return render_to_response('user/user_edit_profile.html', self.get_context_data(), RequestContext(request, c))