У меня есть две модели, вот упрощенный пример:
class Application(TimestampedModel):
...
forms = models.ManyToManyField(Form, related_name='applications', through='ApplicationForm', blank=True)
class ApplicationForm(models.Model):
application = models.ForeignKey(Application, on_delete=models.CASCADE)
form = models.ForeignKey(Form, on_delete=models.CASCADE)
created_at = models.DateTimeField()
updated_at = models.DateTimeField(auto_now=True)
class Meta:
ordering = ['-created_at']
Я хочу отфильтровать поле forms
в модели приложения. Я пытаюсь сделать это:
queryset = Application.objects.get_active().filter(is_public=True, pk=self.kwargs['pk'])
for application in queryset:
forms = application.forms.filter(form_sections__form_fields__pk__in=application.public_form_fields.all())
application.forms.set(forms)
Но я получаю ошибку:
Ошибка атрибута в / api / application / public / 79
Невозможно установить значения для ManyToManyField, в котором указана промежуточная модель. Вместо этого используйте приложения. Приложение AppForm's Manager.
Итак, мой вопрос, возможно ли, и если возможно, как я могу это сделать?