如何创建个性化的Django管理模型?

时间:2010-12-31 08:56:09

标签: python django django-admin

我正在编写一个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'对象   是不可迭代的

在这一行。

我在网页和文档中搜索了这个错误,但我没有发现任何与我的具体问题有关的内容。我认为解决方案非常简单,但我看不到它。有人能帮助我吗?

谢谢!

1 个答案:

答案 0 :(得分: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