我有一个 Django 模型
class Category(MPTTModel):
name = models.CharField(max_length=50, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
def __unicode__(self):
return self.name
class MPTTMeta:
order_insertion_by = ['name']
和模型形式
class UploadForm(ModelForm):
file = forms.FileField()
category = mpttform.TreeNodeMultipleChoiceField(queryset=Category.objects.filter(lft=F('rght')-1))
class Meta:
model = UploadedFile
但是,我在 UploadForm 中的这个类别字段有问题,它应该是类别实例(在模型中定义),但是我的查询集返回类别对象的列表,我在模板中使用它来显示所有叶类别。如果我选择任何表格上的类别并提交它,我收到此错误(如果我选择 cat5)“无法分配 [类别:cat5]:“UploadedFile.category”必须是“类别”实例。所以我明白为什么会发生这个错误,但我想使用 ModelForm 因为 save() 方法,但不知道如何解决这个问题。有什么建议吗?