Django多对多关系通过关联

2024-09-30 06:25:11 发布

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

我有以下标准

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

Class User
   name = models.CharField()
   ...

一个用户可以成为一个卖家,当他得到管理员的批准。卖家模式是这样的。在

^{pr2}$

卖方可以属于任何二级或三级类别

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用户模型的扩展版本。我这么做是因为我有两种不同类型的简介,一种是卖家,另一种是买家。在


Tags: django用户name模型标准models管理员类别
2条回答

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

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

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

class Seller(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE)
   location = models.CharField()
   ...

您可以为类别(see docs)创建一个manytomy关系:

^{pr2}$

或者想到一件事,你也许可以扩展你为你的账户所做的事情:

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

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

但我不确定这是否真的是你想做的。在

如果您只需要基本的用户字段,比如;name、email等,您可以按照@HendrikF的建议扩展Django的用户模型

class Seller(models.Model):
   user = models.OneToOneField(User, on_delete=models.CASCADE)
   location = models.CharField()
   ...

如果你需要定制用户模型,我建议你用Django AbstractUser为例

^{pr2}$

相关问题 更多 >

    热门问题