Ich habe Buch und ein Kategorie-Modell mit einem ManyToMany Beziehung durch ein anderes ModellWie ändere ich das Widget auf einem ManyToMany Modelform
class Category(models.Model):
name = models.CharField(max_length = 255)
class Book(models.Model):
name = models.CharField(max_length = 255)
categories = models.ManyToManyField(Category, through='book.BookCategory')
class BookCategory(models.Model):
business = models.ForeignKey(Business)
category = models.ForeignKey(Category)
user = models.ForeignKey(User)
created = models.DateField()
Dann schauen meine Formulare wie folgt aus:
class BookForm(forms.ModelForm):
name = forms.CharField(max_length = 255)
categories = forms.ModelMultipleChoiceField(
widget=forms.CheckboxSelectMultiple,
queryset = Category.objects.all()
)
class Meta:
model = Business
fields = ('name', 'categories')
Als ich versuchen, eine Instanz des Formulars book_form = Buchform (request.POST, instance = Unternehmen) book_form.save()
ich diesen Fehler zu speichern: In einem ManyToManyField, das ein intermediäres Modell angibt, können keine Werte festgelegt werden. Verwenden Sie stattdessen den Book.BookCategory-Manager.
Wie würde ich das lösen?
Ich habe eine Menge Zeug entfernt, um es schlanker zu machen, die readl BookCategory hat sowohl einen Benutzer als auch einen erstellt, um zu verfolgen, wer was wann getan hat. Ich habe die Frage bearbeitet, um das zu reflektieren – Joelbitar