Django:如何组织模型结构,单模型或几个模型之间的关系?

时间:2017-05-23 10:01:15

标签: python django django-models model

我如何构建我的模型结构让我陷入困境。首先,我将解释我的情况。我在eBay上以直销的方式销售商品,所以当我在ebay上订购新订单时,我会在我的合作伙伴商店订购。

我想创建应用程序,我可以从两个平台组织所有订单。我将使用eBay API,PayPal API,PrestaShop API。

我的问题是:如何规划​​模型的结构?

一个没有关系的模型:

# eBay App
class Order(models.Model):
    date = models.DateTimeField(default=timezone.now, editable=False)
    paid = models.BooleanField(default=False)
    sales_manager_id = models.IntegerField(unique=True)
    shop_order_id = models.IntegerField(unique=True) # order ID from webshop
    shop_order_invoice = models.IntegerField(unique=True) # invoice num from webshop

很少有关系的模特:

# eBay App
class ebayOrder(models.Model):
    date = models.DateTimeField(default=timezone.now, editable=False)
    paid = models.BooleanField(default=False)
    sales_manager_id = models.IntegerField(unique=True)

# shop app
class shopOrder(models.Model):
    date = models.DateTimeField(default=timezone.now, editable=False)
    shop_order_id = models.IntegerField(unique=True) # order ID from webshop
    shop_order_invoice = models.IntegerField(unique=True) # invoice num from webshop
    ebay_order = models.ForeignKey(ebayOrder)

我必须说我已经在这个项目中创建了几个应用程序(我正在根据本地数据库中的产品生成ebay列表)所以我不会仅为shopOrder需求创建新的应用程序。

更新

我只提供了我的模型的基本版本。会有更多的领域。

#eBay App
date, paid_date, amount, sales_manager_id, tracking_number, comment

#shop App
order_id, shop_order_id, invoice, products_amount, shipping_amount, shipping_date

#ebay App - customer_address model, shipping addres etc
order_id, nick, email, name, street1, street2, postcode, city, phone, state, country, company, vat, comment

1 个答案:

答案 0 :(得分:1)

我更喜欢没有关系的一个模型。 出于性能原因,它更好,因为您只需一个SQL查询就可以获取所有数据。实际上,使用Fat模型是django dev中的最佳实践之一。 在您的情况下,我不确定订单的多个条目是否可以具有相同的日期,付款,sales_manager_id字段。因此,每次用户更新订单时,您都会创建一个新条目,复制前3个字段并填写其余字段。如果是这样的话,那么肯定会破坏你的模型。在同一个表中的条目之间复制字段是不好的做法。