Django ModelForm ManyToManyField with Blank=True, Required=False '"" не является допустимым значением для первичного ключа' ошибка

У меня есть модель Django для создания объекта Asset с необязательным полем m2m для менеджеров:

class Asset(models.Model):
    name = models.CharField(max_length=100)
    managers = models.ManyToManyField("users.User", blank=True, related_name="assets")

И пользовательская ModelForm:

class AssetForm(forms.ModelForm):

    managers = forms.ModelMultipleChoiceField(queryset=User.objects.none(), required=False)

    class Meta:
        model = Asset
        fields = [
            "id",
            "name",
            "managers"
        ]

    def save(self, commit=True):
        instance = super().save(commit)

    def __init__(self, *args, **kwargs):

        super(AssetForm, self).__init__(*args, **kwargs)

        self.fields["managers"].queryset = self.org.get_users_with_management_access_role()

    def clean(self):
        cleaned_data = super(AssetForm, self).clean()
        return cleaned_data

С представлением для отправки формы:

    try:
        if request.method == "POST":
            if 'asset_id' in request.POST:
                asset = Asset.objects.get(id=request.POST['asset_id'])
                asset_form = AssetForm(request.POST, instance=asset)
            else:
                asset_form = AssetForm(request.POST)
            try:
                if asset_form.is_valid():
                    asset_form.save()
                    asset_form.save_m2m()
                else:
                    raise ValueError("form_errors")
            except:
                raise ValueError("form_errors")

            return JsonResponse({"message": "Asset successfully created"}, status=200)

У меня есть:

  • Blank=True установлен на поле m2m model
  • Required=False устанавливается на поле ModelForm для managers
  • Вызов asset_form.save_m2m() в представлении

Если я оставляю поле пустым и отправляю форму, она все равно возвращает "" is not a valid value for a primary key.

Что я упускаю или что еще нужно сделать, чтобы разрешить пустое значение для менеджеров в форме? Спасибо

Вернуться на верх