如何构建我们的 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搭建个人博客

ArcGIS中用模型构建器如何批量添加字段

Django admin frontpage 无法通过离开“admin”来正确构建模型 url

Django Forms - 构建一个表单,显示来自多个不同模型的字段,但按外键排序

Django:如何从 ManyToMany 迁移到 ForeignKey?