Имеется модель Lesson с полем:
teacher = models.ForeignKey(
to=settings.AUTH_USER_MODEL,
verbose_name="Преподаватель",
help_text="Преподаватель проводящий данное занятие",
null=True,
blank=True
)
Сделал из этой модели форму, так как нужно было из юзеров фильтровать преподавателей (есть у них такое поле) вот так:
class LessonForm(forms.ModelForm):
fake_teacher = forms.ModelChoiceField(queryset=ExtUser.object.filter(user_type__exact='1'), label="Преподаватель",
help_text="Преподователь проводящий данное занятие", required=False,)
def save(self, commit=True):
lesson = super(LessonForm, self).save(commit=False)
lesson.teacher = self.cleaned_data['fake_teacher']
if commit:
lesson.save()
return lesson
class Meta:
model = Lesson
fields = '__all__'
Суть в том, что если зайти на страницу изменения объекта Lesson в админке, то поле с преподавателем будет пустым. У меня есть подозрения что нужно что-то вроде этого добавить в LessonAdmin:
def get_form(self, request, obj=None, **kwargs):
form = super(LessonAdmin, self).get_form(request, obj, **kwargs)
if obj:
form.fake_teacher = obj.teacher
return form
Но это не работает.