Как хранить историю продуктов и цен в базе данных продуктов Django?

В проекте Django у меня есть одна таблица продуктов DB, содержащая различные поля, включая поля product mspr и current_price. Для каждого продукта в базе данных поле current_price периодически автоматически обновляется, чтобы обнаружить изменения.

Моя проблема заключается в том, что я хочу также хранить исторические данные о цене каждого продукта при каждом изменении, но я не уверен, как реструктурировать эту текущую однотабличную БД продуктов ниже.

class Product(models.Model):
    name = models.CharField(max_length=250)
    manufacturer = models.CharField(max_length=250)
    msrp = models.DecimalField(null=True, max_digits=10, decimal_places=2)  
    current_price = models.DecimalField(null=True, max_digits=10, decimal_places=2)
    # and other product data fields

Я уверен, что мне нужно создать вторую таблицу, поэтому в БД будет две таблицы, как показано ниже. Но кроме курса по БД, который я проходил много лет назад в колледже, у меня нет большого опыта в создании баз данных, поэтому, пожалуйста, кратко объясните, как будет работать отношение первичный/внешний ключ только для этого случая использования на примере ниже. Это должно быть отношение один (продукт) ко многим (производственные исторические изменения цен), правильно?:

class Product(models.Model):
    name = models.CharField(max_length=250)
    manufacturer = models.CharField(max_length=250)
    # and other product data fields

class ProductPrice(models.Model):
    msrp = models.DecimalField(null=True, max_digits=10, decimal_places=2)  
    current_price = models.DecimalField(null=True, max_digits=10, decimal_places=2)
    price_change_date = models.DateTimeField()
    product = models.ForeignKey(Product, on_delete=models.CASCADE)

Кроме того, в моей текущей структуре БД с одной таблицей я обновляю (.update()) поле current_price напрямую каждый раз, когда текущая цена изменяется в коде Django. Как это будет работать с новой структурой БД в плане добавления изменений цены и даты в таблицу ProductPrice каждый раз, когда изменяется текущая цена?

Вернуться на верх