0

我是 Django 的新手,并且已经做了几个类,一个帐户可以有多个订阅者。在 django admin 中查看订阅者时,它会正确显示订阅者与哪个帐户相关。但是,在查看帐户时,它不会显示它拥有哪些订阅者。

我看到一篇文章(How to create many-to-one relationship with django and to display it in admin interface)建议使用内联,尽管它对我不起作用。我在哪里错了?

模型.py:

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


class Account(AbstractUser):
    pass


class Subscriber(models.Model):
    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100, null=True, blank=True)
    email = models.CharField(max_length=100, null=True)
    date_joined = models.DateTimeField(auto_now_add=True, null=True)
    verified = models.BooleanField(default=False)
    account = models.ForeignKey(
        Account, on_delete=models.CASCADE)

    def __str__(self):
        return self.email

    list_display = ('first_name', 'email', 'date_joined', 'verified')

管理员.py:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from accounts import models

# does nothing
class SubscriberInline(admin.TabularInline):
    model = models.Subscriber
    extra = 1


admin.site.register(models.Account, UserAdmin)


# does noting
class AccountAdmin(admin.ModelAdmin):
    inlines = [SubscriberInline, ]
    #inlines = (SubscriberInline, )


@admin.register(models.Subscriber)
class SubscriberAdmin(admin.ModelAdmin):
    list_display = ("first_name", "email",
                    "date_joined", "verified", "account")
4

1 回答 1

0

您没有向您的班级注册任何模型AccountAdmin,因此不会使用它。如果你想使用一些ModelAdmin你需要注册它。与其继承,不如ModelAdmin尝试继承UserAdmin并注册该类:

from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from accounts import models

# does nothing
class SubscriberInline(admin.TabularInline):
    model = models.Subscriber
    extra = 1


class AccountAdmin(UserAdmin):
    inlines = [SubscriberInline]


admin.site.register(models.Account, AccountAdmin)


@admin.register(models.Subscriber)
class SubscriberAdmin(admin.ModelAdmin):
    list_display = ("first_name", "email",
                    "date_joined", "verified", "account")

注意:由于您使用的是自定义用户模型,因此您还应该在管理类中将属性form和设置add_form为自定义表单(从UserChangeFormUserCreationForm设置model它们的类)。Meta

于 2021-06-20T11:29:15.747 回答