我正在编写一个 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' object is not iterable
在这一行。
我在网络和文档中搜索了此错误,但没有发现任何与我的具体问题相关的信息。我认为解决方案会非常简单,但我看不到。谁能帮帮我?
谢谢!
请您参考如下方法:
这是不正确的:
class SimAdmin(admin.ModelAdmin):
phone = forms.ModelChoiceField(queryset=Item.objects.filter(name='phone'))
您正在尝试将 forms.Field 附加到 admin.ModelAdmin。这种方式行不通。
