我正在编写一个Django应用程序,我需要创建一个个性化的管理模型,以便在创建新对象时仅在管理界面中显示已确定的项目。
我为admin.py写了这段代码:
from django import forms
from myapp.models import *
from django.contrib import admin
class SimAdmin(admin.ModelAdmin):
phone = forms.ModelChoiceField(queryset=Item.objects.filter(name='phone'))
fields = ('phone', 'num_phone', 'pin', 'puk')
admin.site.register(Item)
admin.site.register(Sim, SimAdmin)
...
问题是当我登录管理站点时,我的SimAdmin不会出现。 Django在这段代码中没有给我任何错误,但如果我只写
...
admin.site.register(SimAdmin)
...
它给了我一个
TypeError:'MediaDefiningClass'对象 是不可迭代的
在这一行。
我在网页和文档中搜索了这个错误,但我没有发现任何与我的具体问题有关的内容。我认为解决方案非常简单,但我看不到它。有人能帮助我吗?
谢谢!
答案 0 :(得分:3)
这是不正确的:
class SimAdmin(admin.ModelAdmin):
phone = forms.ModelChoiceField(queryset=Item.objects.filter(name='phone'))
您正在尝试将forms.Field附加到admin.ModelAdmin。它没有这种方式。