Каков наилучший способ добавить функции продукта в django с базой данных mysql - PullRequest
0 голосов
/ 18 февраля 2020

Я хочу хранить характеристики продукта в базе данных MySQL, поэтому у меня возникла путаница в отношении того, какой способ лучше хранить его для лучшей производительности и масштабируемости.

В принципе, согласно моей идее, Я проектирую модели, как указано ниже: в этом у меня есть таблица продуктов, таблица характеристик, которая содержит тип продукта поля, для которого тип продукта принадлежит этой конкретной функции. последняя таблица - product_features, в которой я на самом деле храню данные о спецификациях c product_id и feature_id, это правильный путь?

Я использую Django. так вот моя модель!

class Product(models.Model):
    product_id = models.AutoField(primary_key=True)
    product_name = models.CharField(max_length=255, null = False, unique=True)
    product_slug = models.SlugField(unique=True, blank=True, null=True)
    product_title = models.CharField(max_length=255, null = True)
    product_info = models.TextField(null = False)
    product_description = models.CharField(max_length = 255)
    product_price = models.CharField(max_length = 255)
    brand = models.ForeignKey(Brand, on_delete=models.SET_NULL, null=True)
    product_type = models.ForeignKey(Product_type, on_delete=models.SET_NULL, null=True)
    product_status = models.CharField(max_length = 100, default = "publish")
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

class Feature(models.Model):
    feature_id = models.AutoField(primary_key=True)
    feature_name = models.CharField(max_length=255, null = False)
    product_type = models.ForeignKey(Product_type, on_delete=models.SET_NULL, null=True)
    feature_has_value = models.CharField(max_length = 1, null = False)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

class Product_feature(models.Model):
    product_feature_id = models.AutoField(primary_key=True)
    feature = models.ForeignKey(Feature, on_delete=models.SET_NULL, null=True)
    product = models.ForeignKey(Product, on_delete=models.SET_NULL, null=True)
    product_feature_value = models.CharField(max_length=255, null = False)
    created_at = models.DateTimeField(auto_now_add = True)
    updated_at = models.DateTimeField(auto_now = True)

1 Ответ

0 голосов
/ 18 февраля 2020

По моему мнению, ваша модель выглядит хорошо для функции продукта, кроме поля первичного ключа во всей модели, нет необходимости управлять primary key в django модели, потому что django уже управляет полем id как primary key для каждой модели.

Во-вторых, как правило, во многих случаях на сайте онлайн-покупок действуют скидки на определенный продукт, поэтому, если у вас есть такой же план, вы также можете добавить одну модель скидок в свое приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...