Django use mixin должен иметь значение для поля "id", прежде чем это отношение "многие-ко-многим" может быть использовано
Я пытаюсь сохранить объект M2M (установил его в значение по умолчанию, которое является тем, с позицией=1). Когда я вхожу в систему под администратором, все в порядке.
Проблема Я получаю следующую ошибку:
необходимо иметь значение для поля "id", прежде чем можно будет использовать это отношение "многие-ко-многим"
Models.py
class Categorymodel(models.Model):
title=models.CharField(max_length=100)
slug=models.CharField(max_length=100,unique=True)
status=models.BooleanField(default=True)
position=models.IntegerField()
def __str__(self) -> str:
return self.title
class Reportmodel(models.Model):
subject=models.CharField(max_length=100)
category=models.ManyToManyField(Categorymodel,related_name='info')
user=models.ForeignKey(User,on_delete=models.CASCADE)
Mixin.py
class FormValidMixin():
def form_valid(self,form):
if self.request.user.is_admin:
form.save()
else:
category1=(Categorymodel.objects.get(position=1))
self.obj=form.save(commit=False)
self.obj.user=self.request.user
self.obj.category.set(category1)
Вы должны сначала сохранить объект self.obj
, прежде чем вы сможете изменить его отношение "многие-ко-многим", поэтому:
category1 = Categorymodel.objects.get(position=1)
form.instance.user = self.request.user
self.obj=form.save() # ← save the object
self.obj.category.set([category1]) # ← use a list