在Django中重新加载获取请求后,如何防止模型中出现重复的数据条目

时间:2019-11-02 04:44:28

标签: python django database api django-models

我正在尝试将来自外部api的数据加载到django模型中。如何防止每次提取数据时重复数据。这是一种餐厅POS API,因此当客户订购新商品时,他们将被添加到账单JSON对象中

示例:

点酒后,服务员将订单输入POS,API端点如下:

[
    {
        "pk": 1,
        "Description": "Coca Cola",
        "Price": "5.95"
    },
    {
        "pk": 2,
        "Description": "Water",
        "Price": "3.50"
    }
]

然后服务员返回以接收客户的食物订单并将其输入到POS,然后api端点如下所示:

[
      {
        "pk": 1,
        "Description": "Coca Cola",
        "Price": "5.95"
    },
    {
        "pk": 2,
        "Description": "Water",
        "Price": "3.50"
    },
    {
         "pk": 3,
         "Description": "Pizza",
         "Price": "12.00"
    },
    {
         "pk": 4,
         "Description": "Pasta",
         "Price": "11.50"
    }
]

我的模型中有这些表。py

class Restaurant(models.Model):
    Name
    Address

class Table(models.Model):
    Restaurant_ID -> (ForeignKey From Restaurant)
    Table_Number
    API_Endpoint

class Bill(models.Model):
    Table_ID -> (ForeignKey from Table)
    Bill_Status -> Binary field Can be 'Open' or 'Closed'
    Date -> DateTime of bill closed

class Bill_Items(models.Model):
    Bill_Item_ID -> (ForeignKey from Bill)
    Description 
    Price 
    Payment_Made 
    Date 

def get(self,request):
    url = Table.['API_Endpoint']
    r = requests.get('url')
    bill_items = r.json()
    Bill_Items.Description = bill_items.['Description']
    Bill_Items.Price = bill.items.['Price']
    return (Bill_Items.Description, Bill_Items.Price)

在此示例中,当食品订单后重新读取JSON对象时,如何确保饮料订单不会重复?

我的模型?

也许我的数据库设计对于此问题是不正确的,为什么会出现重复?我之所以这样设计,是因为当Bill_ID状态为“打开”时,我需要能够将Bill_Items添加到Bill_ID,一旦“关闭”,则需要使用相同的Table_ID为该表创建一个新的Bill_ID。 / p>

说明我的意思。假设某餐厅的Table_ID = 1,开始提供早餐服务,人们得到食物并付款。所有这些食品都以Bill_ID = 1存储在Bill_Items中,然后将Bill_Status设置为关闭。然后,对于午餐服务,再次打开Table_ID 1,这次的Bill_ID = 2,并且午餐时订购的所有食品都以Bill_ID = 2的形式存储在Bill_Items中,依此类推。

我希望我已经正确解释了我的困境?任何帮助将不胜感激,我一直在这个问题上坐了一段时间。

谢谢。

0 个答案:

没有答案