【问题标题】:Django model class creates its own dependenciesDjango 模型类创建自己的依赖项
【发布时间】:2015-02-18 18:16:28
【问题描述】:

我有一个模型,在实例化时,需要为其自己的外部关系创建新实例。这是一个例子:

class CustomOrder(models.Model):
    product = models.OneToOneField(Product)
    customer = models.ForeignKey(Customer)

当一个新的 CustomOrder 被创建时, CustomOrder.objects.create() 它需要创建新的产品和客户实例来满足它的外键要求。

也许这里需要类方法之类的东西?

@classmethod
def create(cls, base_product):
    product = Product.objects.create()
    customer = Customer.objects.create()
    return cls(product=product, customer=customer)

很遗憾,这个类方法没有按设计工作。

【问题讨论】:

  • 订单会创建一个全新的产品/客户而不是使用现有产品/客户似乎很奇怪
  • 自定义订单(例如委托的艺术品)是针对尚不存在的产品的。如果客户只是在寻找快速报价,我们可能对此一无所知。

标签: django database django-models foreign-keys class-method


【解决方案1】:

正如您所说,您的代码已经可以工作了。另一种方法是把它放在Manager

class CustomOrderManager(models.Manager):
    def create_custom_order(self):
        return self.create(product=Product.objects.create(), customer=Customer.objects.create())

class CustomOrder(models.Model):
    product = models.OneToOneField(Product)
    customer = models.ForeignKey(Customer)

    objects = CustomOrderManager()

custom_order = CustomOrder.objects.create_custom_order()

【讨论】:

    【解决方案2】:

    这已经是正确的,只需使用创建实例

    CustomOrder.create()

    【讨论】:

      猜你喜欢
      • 2018-12-24
      • 2018-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多