【发布时间】:2011-07-24 05:30:08
【问题描述】:
我正在 appengine 上尝试使用 django-nonrel 并尝试使用 djangotoolbox.fields.ListField 来实现多对多关系。正如我在文档中所读到的,ListField 可以用来为不支持多对多关系的 djamgo-nonrel 制定解决方法。
这是我的模型的摘录:
class MyClass(models.Model):
field = ListField(models.ForeignKey(AnotherClass))
因此,如果我做对了,我将创建另一个类的外键列表,以显示与另一个类的多个实例的关系
使用这种方法,一切正常……没有例外。我可以在代码和视图中创建“MyClass”对象。但是当我尝试使用管理界面时,出现以下错误
No form field implemented for <class 'djangotoolbox.fields.ListField'>
所以我虽然会尝试一些我以前没有做过的事情。创建我自己的领域。实际上,我自己的表单用于在管理界面中编辑MyClass 实例。这是我所做的:
class MyClassForm(ModelForm):
field = fields.MultipleChoiceField(choices=AnotherClass.objects.all(), widget=FilteredSelectMultiple("verbose_name", is_stacked=False))
class Meta:
model = MyClass
然后我将MyClassForm 作为表单传递给管理界面
class MyClassAdmin(admin.ModelAdmin):
form = MyClassForm
admin.site.register(MyClass, MyClassAdmin)
我虽然这会工作,但它没有。当我进入管理界面时,我得到与以前相同的错误。谁能告诉我在这里做错了什么......或者如果您有任何其他建议或成功案例使用来自djangotoolbox.fields 在管理界面中的ListField、SetField 等,我们将不胜感激。
【问题讨论】:
标签: google-app-engine django-admin django-nonrel listfield