在django admin中添加User的相关对象并显示在User模型中

Add the related objects of User and display them in User model in django admin

我有两个模型项目和项目中的用户,用户相关,如下所示 models.py:

class project(models.Model):
    user=models.OneToOneField(User,on_delete=models.CASCADE)
    room = models.ForeignKey(room,on_delete=models.CASCADE)
    goal = models.ManyToManyField(goal)
    design = models.ManyToManyField(design)
    furniture = models.ForeignKey(furniture,on_delete=models.CASCADE)
    created_at = models.DateTimeField(default=datetime.now)
    updated_at = models.DateTimeField(default=datetime.now)

现在我想在 django admin 的用户页面中为每个用户显示额外的列作为项目,当我点击它时它应该转到该用户的特定项目详细信息页面 截图: 这是用户列表页面

这是项目列表页面

这是项目详情页面

admin.py:

from django.contrib import admin
from .models import project
class ProjectAdmin(admin.ModelAdmin):
    readonly_fields = ('user','room','goal','design','furniture','created_at','updated_at')

admin.site.register(project,ProjectAdmin)

请帮助我提前谢谢

您需要为您的用户编写自定义管理员:

from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin
from django.utils.safestring import mark_safe

UserModel = get_user_model()

admin.site.unregister(UserModel)

@admin.register(UserModel)
class CustomUserAdmin(UserAdmin):
    list_display = (
        'username', 'email', 'first_name', 'last_name', 'user_project'
    )

    def user_project(self, obj):
        url = '/admin/modsy/project/{}/change/'.format(obj.project.pk)
        return mark_safe('<a href="{}">view project</a>'.format(url))