Куда и как положить мой бизнес логи c в django - PullRequest
0 голосов
/ 18 марта 2020

Друг порекомендовал мне прочитать книгу двумя лопатками Django, и я был поражен рекомендациями, которые он дает для надежного и хорошо разработанного проекта Django. Это чтение вызвало у меня сомнения, и именно здесь я положил бизнес-логику c, я привожу пример. Предположим, у меня есть две модели:

models.py

class Sparks(models.Model):
    flavor = models.CharField(max_length=100)
    quantity = models.IntegerField(default=0)


class Frozen(models.Model):
    flavor = models.CharField(max_length=100)
    has_cone = models.BooleanField()
    quantity_sparks = models.IntegerField(default=0)

Предположим, что каждый раз, когда я добавляю замороженную, если в ней есть искры, я должен вычесть ее от модели Sparks и проверьте, есть ли доступное количество. В книге они рекомендуют поместить этот лог c в models.py или forms.py. Если требуется создать какую-либо модель, измените данные из другой модели, где я должен это сделать?

1 Ответ

0 голосов
/ 18 марта 2020

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

class Flavor(models.Model):
    name = models.CharField(max_length=100)

class Sparks(model.Model):
    flavor = models.ForeignKeyField(Flavor, on_delete=models.CASCADE)
    quantity = models.IntegerField(default=0)

class Frozen(model.Model):
    # This maybe should be a OneToOne, can't tell from your description.
    sparks = models.ForeignKeyField(Sparks)
    has_cone = models.BooleanField()

Тогда вы бы сделали

frozen_instance = Frozen.objects.get()
frozen.sparks.quantity # This has replaced frozen_instance.quantity_sparks
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...