如何构建我们的 django 模型
Posted
技术标签:
【中文标题】如何构建我们的 django 模型【英文标题】:how to structure our django model [closed] 【发布时间】:2021-05-25 15:08:48 【问题描述】:我在 django 做网上购物项目。 我将我的项目拆分为管理应用、版主应用、商店应用。
有两种类型的产品-一种由版主插入,另一种由注册商店插入。
我是否需要为这两个应用创建单独的产品模型,
如果我尝试在管理应用程序中提供一个通用产品表,外键将会出现问题。
那么我将如何创建产品模型,单独的(在版主应用程序和商店应用程序中)或通用(在管理应用程序中)
订单模型和库存模型存在同样的问题。
【问题讨论】:
【参考方案1】:class Product(models.Model):
user = models.Foreignkey(User, null=True, blank=True, ondelete=models.CASCADE)
shop = models.Foreignkey(Shop, null=True, blank=True, ondelete=models.CASCADE)
name = models.Charfield(max_length = 50)
...
如果添加了用户和店铺,则认为是注册店铺的产品,如果用户和店铺为空,则认为是版主插入的产品。
【讨论】:
但是我将放置模型的位置。我可以把它放在AdminApp中吗?【参考方案2】:有几种可能的解决方案:
您可以创建产品模型的模型(抽象与否,这取决于您是否需要请求数据库中的所有产品)并从中继承以创建具有商店 FK 的 ShopProduct 和具有主持人 FK 的另一个 ModeratorProduct
您可以在产品模型https://docs.djangoproject.com/en/3.1/ref/contrib/contenttypes/#generic-relations 中使用通用 FK 来提供与 Shop 或 Moderator 的关系
您可以为您的模型(Shop 和 Moderator)提供两个 FK,并且只为每个产品定义一个。
【讨论】:
以上是关于如何构建我们的 django 模型的主要内容,如果未能解决你的问题,请参考以下文章
Django - 如何构建适合的中间 m2m 模型? / 最佳实践
Django admin frontpage 无法通过离开“admin”来正确构建模型 url