如何创建个性化的Django管理员模型?
我正在写一个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)
...
就会出现一个
类型错误:'MediaDefiningClass'对象 不能被迭代
的错误,出现在这一行。
我在网上和文档里搜索了这个错误,但没有找到任何与我具体问题相关的信息。我觉得解决方案应该很简单,但我看不出来。有人能帮我吗?
谢谢!
1 个回答
3
这个说法是不对的:
class SimAdmin(admin.ModelAdmin):
phone = forms.ModelChoiceField(queryset=Item.objects.filter(name='phone'))
你试图把 forms.Field 连接到 admin.ModelAdmin,这样是行不通的。
看看怎么正确实现这个功能:http://docs.djangoproject.com/en/1.2/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_manytomany