@BobbyDjunk

Как изменить queryset в форме?

Здравствуйте!

Есть две модели (всё упрощенно):
#models.py
class Organization(models.Model):
    name = models.CharField(max_length=200, verbose_name='Название организации')
    type = models.ForeignKey(CarrierType, null=True, verbose_name='Тип перевозчика', on_delete=models.SET_NULL)
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

class CarrierType(models.Model):
    name = models.CharField(max_length=50, verbose_name='Тип перевозчика')
    author = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE,  lated_name='author_carrier_types')


Задача состоит в том, чтобы в форме Создания новой Organization в поле type
находился список экземпляров CarrierType, созданных только текущим пользователем.
Пытался решить с помощью ModelChoiceField, но что-то пошло не так

форма:
#forms.py
class OrganizationForm(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.get('user')
        super(OrganizationForm, self).__init__(*args, **kwargs)

        self.type = forms.ModelChoiceField(
            queryset=CarrierType.objects.filter(author=self.user)
        )

    class Meta:
        model = Organization
        fields = ('name')


так выглядит контроллер:
#views.py
class OrganizationCreateView(LoginRequiredMixin, CreateView):
    template_name = 'carriers/create_organization.html'
    form_class = OrganizationForm

    def form_valid(self, form):
        form.instance.author = self.request.user
        form.instance.slug = slugify(form.instance.name)
        return super().form_valid(form)


Буду благодарен за любую помощь!
  • Вопрос задан
  • 148 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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