2016-02-03 3 views
0

Как я могу изменить модель в UpdateView для пользователей разных типов? У меня есть Student и Teacher унаследовал от AbstractBaseUser, и мне нужно изменить для для нихПредставления на основе классов UpdateView django различного типа модели

class EditUser(UpdateView): 
    success_url = '/success/' 
    template_name = 'edit-profile.html' 
    model = Teacher (I need to choose this Teacher or Student) 

Я знаю о get_template_names(self) метод или get_success_url(self), но не может найти get_model метод. мне нужно somethng как:

def get_model_name(self): 
    if self.request.user.user_type == 'teacher': 
     return Teacher 
    if self.request.user.user_type == 'student': 
     return Studend 

Спасибо.

ответ

0

Согласно Джанго documentation:

model

модель, что эта точка зрения будет отображать данные. Задание model = Foo фактически совпадает с указанием queryset = Foo.objects.all(), , где objects обозначает Foo по умолчанию.

queryset

A QuerySet, который представляет объекты. Если это предусмотрено, значение queryset заменяет значение, указанное для model.

get_queryset()

Возвращает QuerySet, который будет использоваться для получения объекта, который этот вид будет отображаться. По умолчанию get_queryset() возвращает значение атрибута queryset, если оно установлено, в противном случае оно построит QuerySet, вызвав метод all() в менеджере атрибута атрибута модели.

Таким образом, все, что вам нужно переопределить get_queryset методу

+0

Спасибо вы собираетесь попробовать прямо сейчас –

+0

Вас! – soon

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