AlexNest
@AlexNest
Работаю с Python/Django

Как ограничить варианты select по пользователю в django?

Есть третья модели - дисциплины, список дисциплин и лекции, последние две связанны с первой внешним ключом.
В списке дисциплин допустимые для пользователя дисциплины, по которым он может писать лекции.
Нужно ограничить значение в форме.
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.
  • Вопрос задан
  • 157 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы