Как предотвратить повторяющиеся записи данных в моей модели после перезагрузки запроса get в django - PullRequest
0 голосов
/ 02 ноября 2019

Я пытаюсь загрузить данные из внешнего API в мою модель Django. Как я могу предотвратить дублирование данных при каждом извлечении. Это API POS ресторана, и поэтому, когда клиент заказывает новые товары, они добавляются к счету. JSON Object

Пример:

После заказа напитков официант вводитПорядок для 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"
    }
]

У меня есть эти таблицы в моих models.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_Items к Bill_ID, пока статус Bill_ID равен «Открыто», как только он «Закрыт», необходимо создать новый Bill_ID для этой таблицы с тем же Table_ID.

Чтобы проиллюстрировать, что я имею в виду. Допустим, Table_ID = 1 в ресторане, который открыт для завтрака, люди получают еду и платят. Все эти продукты хранятся в Bill_Items с Bill_ID = 1, а затем Bill_Status устанавливается на закрытие. Затем для обеденного обслуживания снова открывается Table_ID 1, на этот раз с Bill_ID = 2, и все продукты питания, заказанные на обед, сохраняются в Bill_Items с Bill_ID = 2. и так далее, и так далее.

Надеюсь, я правильно объяснил свое затруднительное положение? Любая помощь будет принята с благодарностью, я сижу на этой проблеме некоторое время.

Спасибо.

...