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 modelRequired=False
устанавливается на поле ModelForm дляmanagers
- Вызов
asset_form.save_m2m()
в представлении
Если я оставляю поле пустым и отправляю форму, она все равно возвращает "" is not a valid value for a primary key.
Что я упускаю или что еще нужно сделать, чтобы разрешить пустое значение для менеджеров в форме? Спасибо