【问题标题】:Create models from json feed in Django在 Django 中从 json 提要创建模型
【发布时间】:2018-05-09 15:33:39
【问题描述】:

我正在制作一个 django 应用程序来浏览不同市场的可用产品。我从 JSON url 提要中获取模型的数据,我不确定将这些数据转换为模型的最佳方法,因为单个市场的提要可以包含超过 50k 项。

模型 - 随时提出对这些模型的任何改进

# Details of a sellable products
class Product(models.Model):
    item = models.IntegerField(primary_key=True, auto_created=False)
    name = models.CharField(max_length=40)

# Market where products can be bought, some markets will cater to multiple suburbs.
class Market(models.Model):
    id = models.IntegerField(primary_key=True, auto_created=True)
    name = models.CharField(max_length=40)

# Nearby suburbs can share the one market
class Suburb(models.Model):
    name = models.CharField(max_length=30)
    market = models.ForeignKey(Market, on_delete=models.SET_NULL, null=True)

# Actual product for sale
class ProductForSale(models.Model):
    sale = models.IntegerField(primary_key=True)
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    cost = models.IntegerField(default=1)
    owner = models.CharField(max_length=30)
    quantity = models.IntegerField(default=1)
    market = models.ForeignKey(Market,on_delete=models.SET_NULL, null=True )

市场产品示例

"market_products": [
    {
        "id":11654,
        "item":123,
        "owner":"Bob",
        "suburb":"Springvale",
        "cost":3,
        "quantity":1,

    },
    {
        "id":11655,
        "item":123,
        "owner":"Sarah",
        "suburb":"Sunnyville",
        "cost":5,
        "quantity":2,

    },

这就是我尝试填充我的 ProductForSale 模型的方式 - 我不知道这是否是 Product FK 的正确方法,或者如何将郊区链接到其 Market FK

    markets = Market.objects.all()
    for market in markets:
        url = "jsonurl"
        response = urllib.request.urlopen(url)
        data = json.loads(response.read())
        for entry in data['market_products']:
                new_product_sale = ProductForSale.objects.create(
                    product = Product.objects.get(item=entry['item']),
                    cost = entry['cost'],
                    owner = entry['owner'],
                    quantity = entry['quantity']
                )
                new_product_sale.save()

我是否应该为每个市场的产品创建一个单独的模型,或者将它们全部包含在一个模型中?

【问题讨论】:

    标签: django django-models django-database


    【解决方案1】:

    最终为所有市场产品选择了一种模型,到目前为止还没有遇到任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多