admin中的list_display无效

时间:2014-08-21 15:07:22

标签: django django-models django-forms django-admin django-views

这是我的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下拉显示我之前注册的所有用户名。

enter image description here

missing是什么?或者可以clone repo我的{{1}}看看你自己。

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

List Display Example


修改

您有两个错误。

首先,您似乎无法在任何地方创建任何SignUp个对象。在管理员更改列表将显示任何条目之前,您必须创建一些条目。

其次,您的SignUp模型的__unicode__方法引用了不存在的字段(self.user从未定义 - 在您使用的SignUp类username = models.OneToOneField(User) 中,因此您将其称为{ {1}})而且它根本不会返回一个unicode字符串。

尝试:

username

然后创建一些SignUp然后它将工作。同样,list_display部分工作得很好。