首页 > 解决方案 > 在哪里以及如何将我的业务逻辑放入 django

问题描述

一位朋友建议我读两勺 Django 这本书,我对他为一个健壮且设计良好的 Django 项目提出的建议感到惊讶。这个阅读让我产生了疑问,这是我放置业务逻辑的地方,我举了一个例子。假设我有两个模型:

模型.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模型中减去它并检查是否有可用的数量。在书中,他们建议将此逻辑放在models.pyor中forms.py。如果创建一些模型需要从另一个模型修改数据我应该在哪里做?

标签: djangodjango-modelslogicbusiness-logic

解决方案


您缺少数据模型,这可能是不安的根源。

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

推荐阅读