这是我的github回购Inout。我正在学习django,我工作非常非常简单的django注册&登录系统。
我的问题是:
如何使用usernames
列出admin
中的所有list_display
。但管理面板中没有显示任何内容我可以知道为什么吗?
在我的工作代码中:
# models.py
username = models.OneToOneField(User)
first_name = models.CharField(max_length=100)
# admin.py
class SignupAdmin(admin.ModelAdmin):
list_display = ['username']
admin.site.register(Signup, SignupAdmin)
为您提供的信息参考:
如果我在管理员中使用list_filter
,我可以在过滤器面板中看到所有用户名
然后,如果我正在访问此页面http://127.0.0.1:8000/admin/system/signup/
Select signup to change
0 signups
如果我正在访问此页面http://127.0.0.1:8000/admin/frontend/profile/add/
,我可以看到username
的下拉显示我之前注册的所有用户名。
我missing
是什么?或者可以clone
repo
我的{{1}}看看你自己。
答案 0 :(得分:1)
你确定它不能正常工作吗? list_display
应该取一个元组/字段列表,然后将这些字段显示为主表的列,如下面taken from the django admin documentation所示,其中主表中的每个条目都有一个用户名,电子邮件地址,名字,姓氏,员工身份。这将由
list_display = ['username', 'email', 'first_name', 'last_name', 'is_staff']
在内置用户模型的ModelAdmin中(取自django.contrib.auth.models
)。只有在list_filter
下定义字段时,才会填充右侧的侧栏(带有标签"过滤器")。
请注意,如果您只定义了一个字段,并且您的模型具有返回用户名的__unicode__
函数,则只需添加list_display = ('username',)
就不会发现显着差异。我建议你试试list_display = ('username', 'first_name',)
。在这种情况下,对于每个SignUp
,您会在主表中看到两列 - 一列包含username
,另一列包含first_name
。
修改强>
您有两个错误。
首先,您似乎无法在任何地方创建任何SignUp
个对象。在管理员更改列表将显示任何条目之前,您必须创建一些条目。
其次,您的SignUp模型的__unicode__
方法引用了不存在的字段(self.user从未定义 - 在您使用的SignUp类username = models.OneToOneField(User)
中,因此您将其称为{ {1}})而且它根本不会返回一个unicode字符串。
尝试:
username
然后创建一些SignUp然后它将工作。同样,list_display部分工作得很好。