我有Book和一个与另一个模型有很多关系的类别模型
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()
然后我的表格看起来像这样:
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')
当我尝试保存表单的实例时 book_form = BookForm(request.POST,instance = business) book_form.save()
我收到此错误: 无法在指定中间模型的ManyToManyField上设置值。请改用book.BookCategory的管理器。
我该如何解决这个问题?
答案 0 :(得分:0)
由于BookCategory
中没有任何额外字段,您可以删除模型和through='BookCategory'
参数。然后将创建一个隐式模型,您应该能够使用该小部件。