Есть третья модели - дисциплины, список дисциплин и лекции, последние две связанны с первой внешним ключом.
В списке дисциплин допустимые для пользователя дисциплины, по которым он может писать лекции.
Нужно ограничить значение в форме.
class Discipline(models.Model):
name = models.CharField('Название дисциплины', max_length=50)
class DiscList (models.Model):
Discipline = models.ForeignKey(Discipline, on_delete=models.CASCADE, null=False)
username = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
def __str__(self):
return self.Discipline.name
class Meta:
verbose_name = 'Список дисциплин'
verbose_name_plural = 'Списки дисциплин'
unique_together = ('username', 'Discipline')
class Lecture(models.Model):
User = models.ForeignKey(User,on_delete=models.PROTECT,null=True)
discipline = models.ForeignKey(Discipline,on_delete=models.PROTECT,null=True)
title = models.CharField('Название лекции', max_length=150)
text = models.TextField('Текст лекции')
date = models.DateField('Дата публикации',auto_now=True)
class Meta:
verbose_name = 'Лекция'
verbose_name_plural = 'Лекции'
def __str__(self):
return self.title
def get_absolute_url(self):
return '/editor/'
Форма
class LectureForm(ModelForm):
text = forms.CharField(widget=CKEditorWidget())
class Meta:
model = Lecture
fields = ['discipline','title', 'text']
widgets = {
'title' : TextInput(attrs={
'class': 'lect_edit',
'placeholder' : 'Название'
}),
'discipline':Select(attrs={
'class':'lect_edit'
}),
}
class SheludeForm(ModelForm):
class Meta:
model = Shelude
fields = '__all__'
В представлениях пытаюсь подставить значения из второй таблицы
***
form.fields['discipline'].queryset = DiscList.objects.filter(username=request.user)
***
но на выходе получается
Exception Type: ValueError at /editor/
Exception Value: Cannot assign "": "Lecture.discipline" must be a "Discipline" instance.