首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django ModelForm ValueError

Django ModelForm ValueError
EN

Stack Overflow用户
提问于 2012-06-03 01:46:03
回答 2查看 306关注 0票数 0

我有一个Django模型

代码语言:javascript
复制
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']

和ModelForm

代码语言:javascript
复制
class UploadForm(ModelForm):
   file = forms.FileField()
   category = mpttform.TreeNodeMultipleChoiceField(queryset=Category.objects.filter(lft=F('rght')-1))
   class Meta:
         model = UploadedFile

然而,我在UploadForm中的这个类别字段遇到了问题,它应该是类别实例(在模型中定义),但是我的查询集返回类别对象列表,我在模板中使用它来显示所有叶categories.If。我选择表单上的任何类别并提交它,我得到这个错误(如果我选择cat5)‘无法分配类别: cat5:"UploadedFile.category“必须是一个”类别“实例。’所以我理解为什么会发生这个错误,但是由于this.Any ()方法,我想使用ModelForm,但是不知道如何修复this.Any建议?

EN

回答 2

Stack Overflow用户

发布于 2012-06-03 10:13:27

Django告诉您,您必须启动一个category实例才能迭代categories。因此,category实例从url中获取参数,url参数在urls.py中使用正则表达式。因此,您需要捕获该参数,并使其成为视图中的类别实例。

*查看基于类的泛型视图,其中的视图会自动为您提供params上下文变量。

票数 0
EN

Stack Overflow用户

发布于 2012-06-03 11:38:32

我认为

代码语言:javascript
复制
category = mpttform.TreeNodeMultipleChoiceField(queryset=Category.objects.filter(lft=F('rght')-1))

适用于类别关系,我猜m2m是模型上传文件中的ForeignKey。如果是这样,您应该使用

代码语言:javascript
复制
category = mpttform.TreeNodeChoiceField(queryset=Category.objects.filter(lft=F('rght')-1))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10864577

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档