Python Django Manytomy通过关系

Python Django Manytomy通过关系,python,django,database-design,django-models,django-orm,Python,Django,Database Design,Django Models,Django Orm,我有以下标准 我有一个用户模型,它本身是从Django用户模型扩展而来的 Class User name = models.CharField() ... 当用户得到管理员的批准时,他可以成为卖家。卖方模式是这样的 Class Seller location = models.CharField() INDIVIDUAL = '1' COMPANY = '2' ACCOUNT_CHOICES = ( (INDIVIDUAL, 'ind

我有以下标准

我有一个用户模型,它本身是从Django用户模型扩展而来的

Class User
   name = models.CharField()
   ...
当用户得到管理员的批准时,他可以成为卖家。卖方模式是这样的

Class Seller
    location = models.CharField()
    INDIVIDUAL = '1'
    COMPANY = '2'
    ACCOUNT_CHOICES = (
        (INDIVIDUAL, 'individual'), 
        (COMPANY, 'company'),
    )

    account_type_name = models.CharField(max_length=2,choices=ACCOUNT_CHOICES, default=INDIVIDUAL)
卖方可以属于任何第二或第三级类别

Class Level1Category
    name = models.CharField()

Class Level2Category
    name = models.CharField()
    level1 = models.ForeignKey(Level1Category)

Class Level3Category
    name = models.CharField()
    level2 = models.ForeignKey(Level2Category)
当用户申请卖方帐户时,他必须选择2级或3级类别中的任何一个。这将是有效的模型架构。如何将类别模型与卖家链接,以及如何将这两个模型与用户链接

编辑


我的用户模型已经是Django用户模型的扩展版本。我这样做是因为我有两种不同类型的配置文件,一种是卖家,另一种是买家。

我建议您尝试扩展Django的用户模型()

您的卖家将从您的用户模型扩展:

class User(models.Model):
    name = models.CharField()
    ....

class Seller(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE)
   location = models.CharField()
   ...
您可以为类别()创建多个关系:

或者想到一件事,您可能可以扩展您为您的帐户\u type\u name所做的工作:

LEVEL_CATEGORY = (
    (1, 'Level 1'), 
    (2, 'Level 2'),
    (3, 'Level 2'),
)

level_category = models.CharField(choices=LEVEL_CATEGORY, default=1)

但我不确定这是否真的是您想要做的。

我建议您尝试扩展Django的用户模型()

您的卖家将从您的用户模型扩展:

class User(models.Model):
    name = models.CharField()
    ....

class Seller(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE)
   location = models.CharField()
   ...
您可以为类别()创建多个关系:

或者想到一件事,您可能可以扩展您为您的帐户\u type\u name所做的工作:

LEVEL_CATEGORY = (
    (1, 'Level 1'), 
    (2, 'Level 2'),
    (3, 'Level 2'),
)

level_category = models.CharField(choices=LEVEL_CATEGORY, default=1)

但我不确定这是否真的是您想要做的。

如果您只需要基本的用户字段,例如;姓名、电子邮件等,您可以按照@HendrikF的建议扩展Django的用户模型

class Seller(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE)
   location = models.CharField()
   ...
如果您需要定制用户模型,我建议您使用Django AbstractUser

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    consumer = models.ForeignKey('Consumer', null=True, blank=True)
    ...

如果只需要基本用户字段,如;姓名、电子邮件等,您可以按照@HendrikF的建议扩展Django的用户模型

class Seller(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE)
   location = models.CharField()
   ...
如果您需要定制用户模型,我建议您使用Django AbstractUser

from django.contrib.auth.models import AbstractUser

class User(AbstractUser):
    consumer = models.ForeignKey('Consumer', null=True, blank=True)
    ...

谢谢你,亨德里克。我的用户模型已经扩展为Django用户模型。有两种类型的配置文件,卖方和买方使用从Django用户模型扩展而来的用户模型。谢谢Hendrick。我的用户模型已经扩展为Django用户模型。有两种类型的配置文件,卖方和买方使用从Django用户模型扩展而来的用户模型。