1

我已经创建了这样的模型

class User(AbstractUser):
    login_count = models.PositiveIntegerField(default=0)

class Supplier(User):
    company_name= models.CharField(max_length=30)
    company_domain=models.CharField(max_length=30)
    

class Worker(User):
    ACCOUNT_TYPE = (
        ('1', 'Admin'),
        ('2', 'Regular'),
    )
    account_type = models.CharField(max_length=1, choices=ACCOUNT_TYPE)

在 users.admin.py 中,我有

admin.site.register(Supplier)
admin.site.register(Worker)

为什么我在 Django Admin 中将所有模型名称都作为用户?而不是工人和供应商?

在此处输入图像描述

4

2 回答 2

3

因为AbstractUser是一个抽象模型,所以它的Meta类被所有子类docs继承。

Meta您需要为每个模型提供自己的类并传递verbose_nameverbose_name_plural属性以覆盖AbstractUsersMeta类中设置的值

class Supplier(User):
    company_name = models.CharField(max_length=30)
    company_domain = models.CharField(max_length=30)

    class Meta:
        verbose_name = 'supplier'
        verbose_name_plural = 'suppliers'


class Worker(User):
    ACCOUNT_TYPE = (
        ('1', 'Admin'),
        ('2', 'Regular'),
    )
    account_type = models.CharField(max_length=1, choices=ACCOUNT_TYPE)

    class Meta:
        verbose_name = 'worker'
        verbose_name_plural = 'workers'
于 2020-12-31T08:40:38.227 回答
0

他们可能使用了 User 类的详细名称,因为它们都继承自它。尝试像这样修改:

class Supplier(User):
    company_name= models.CharField(max_length=30)
    company_domain=models.CharField(max_length=30)

    class Meta: 
        verbose_name = 'Supplier'

class Worker(User):
    ACCOUNT_TYPE = (
        ('1', 'Admin'),
        ('2', 'Regular'),
    )
    account_type = models.CharField(max_length=1, choices=ACCOUNT_TYPE)

    class Meta: 
        verbose_name = 'Worker'

我从这篇文章中得到它。

于 2020-12-31T08:41:25.847 回答