Django管理员 - 添加自定义应用程序,显示现有的用户'数据?

时间:2015-07-15 05:46:32

标签: python django django-admin models

Here's the screenshot:

我需要待定用户(如上图所示)在用户中显示相同的数据,即。 添加用户时,也应在待处理用户中添加。

这是我的 models.py:

from django.db import models
from django.contrib.auth.models import User


class PendingUser(models.Model):
    user = models.ForeignKey(User)

我尝试在待处理应用 admin.py 中添加此内容但是它无法正常工作

from django.contrib import admin
from django.contrib.admin.sites import AdminSite, site
from pending.models import PendingUser
from django.contrib.auth.models import User

class PendingUserAdmin(admin.ModelAdmin):
    list_display = ('username', 'email', 'first_name', 'last_name', )
    def username(self, request):
            return User.objects.get('username')

    def email(self, request):
            return User.objects.get('email')

    def first_name(self, request):
            return User.objects.get('first_name')

    def last_name(self, request):
            return User.objects.get('last_name')

admin.site.register(PendingUser, PendingUserAdmin)

当我尝试makemigrations时,会发生以下错误:You are trying to add a non-nullable field 'user' to pendinguser without a default; we can't do that (the database needs something to populate existing rows). 怎么了?还有另一种方法吗?

1 个答案:

答案 0 :(得分:0)

有很多错误。 PendingUser和User彼此无关。

  1. 模型PendingUser与User(django.contrib.auth.models.Users)无关。
  2. User.objects.get(user__id = request.id).username。您不会在请求中获取ID(request.id)。此部分user__id不是正确的方法,您只是根据ID过滤用户。正确的方法是User.objects.get(id=some_id)