Django | formfield(用于)管理中的许多名称显示

2024-04-29 00:45:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我只是在学习Django,请原谅我的无知

这是我的模型.py:

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


class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    admin = models.BooleanField("Admin Status")


class Team(models.Model):
    name = models.CharField("Team Name", max_length=20, default="")
    admins = models.ManyToManyField(User, related_name="admins")
    members = models.ManyToManyField(User, related_name="members")

这是我的管理员

from django.contrib import admin
from .models import Team, Profile
from django.contrib.auth.models import User


class ProfileAdmin(admin.ModelAdmin):
    list_display = ('user', 'admin')


admin.site.register(Profile, ProfileAdmin)


class TeamAdmin(admin.ModelAdmin):
    list_display = ('name',)

    def formfield_for_manytomany(self, db_field, request, **kwargs):
        print(db_field)
        if db_field.name == "admins":
            kwargs["queryset"] = Profile.objects.filter(admin=True)
        return super(TeamAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)


admin.site.register(Team, TeamAdmin)

这很完美,但是我的管理页面上的管理员显示为“配置文件对象(1)”、“配置文件对象(2)”等等

我做错了什么?或者在哪里更改这些显示的方式


Tags: djangonamefromimportfielddbadminmodels
1条回答
网友
1楼 · 发布于 2024-04-29 00:45:26

它采用__str__作为对象的名称,默认情况下使用Model object (pk)。因此,您可以覆盖__str__,例如:

class Profile(models.Model):
    # …

    def __str__(self):
        return str(user)

相关问题 更多 >