【问题标题】:Why are models having there parent class names in admin Django为什么模型在管理员 Django 中有父类名
【发布时间】:2021-04-07 15:13:41
【问题描述】:

我已经创建了这样的模型

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 中将所有模型名称都设置为用户?而不是工人和供应商?

【问题讨论】:

    标签: python django django-admin django-users django-admin-actions


    【解决方案1】:

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

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

    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'
    

    【讨论】:

      【解决方案2】:

      他们可能使用了 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'
      

      我从这个article得到它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-11
        • 2013-01-14
        • 1970-01-01
        • 2013-02-03
        • 2015-11-15
        • 2011-01-26
        相关资源
        最近更新 更多