Здравствуйте!
Есть две модели (всё упрощенно):
#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)
Буду благодарен за любую помощь!