Django - структура модели - PullRequest
       3

Django - структура модели

1 голос
/ 09 февраля 2020

Я новичок в Django, и у меня возникла ситуация с структурой моей модели:

У меня есть модель Item, представляющая множество предметов для продажи.

Некоторые предметы имеют tag. Некоторые нет.

В зависимости от того, какая tag будет иметь такую ​​же percentage скидку: пользователю предоставляется пять вариантов выбора (5%, 10%, 15%, 20%, 25%);

Когда администратор / пользователь увеличивает скидку, скажем, с 5% до 15%, ВСЕ элементы с тегом будут иметь такую ​​же скидку 15%.

Я не уверен, стоит ли устанавливать логическое значение tag поле, а затем еще одно поле для percentage или даже другой модели, предоставляющей варианты скидок percentage, или я должен просто установить IntegerField выбора тегов для percentage? Но как сохранить все элементы с одинаковым тегом syn c? Есть ли способ, который потребляет меньше всего ресурсов?

1 Ответ

1 голос
/ 09 февраля 2020

Вы можете создать пустое поле, которое относится к модели Tag, и позволить модулю Tag содержать процент. Например:

from decimal import Decimal

class Tag(models.Model):
    percentage = models.DecimalField(max_digits=2, decimal_places=2)

class Item(models.Model):
    # …
    discount_tag = models.ForeignKey(Tag, on_delete=models.PROTECT, null=True)

    @property
    def discount(self):
        if self.discount_tag is not None:
            return self.discount_tag.percentage
        return Decimal()

Здесь, например, мы можем, например, добавить @property, который проверяет, есть ли у Item связанный тег, и если да, то возвращает percentage этого discount_tag. В противном случае возвращается Decimal('0').

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