Django模型类创建自己的依赖项

时间:2014-12-19 19:03:21

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

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

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)

不幸的是,这个类方法没有按设计工作。

2 个答案:

答案 0 :(得分:1)

这已经是正确的,只需使用

创建实例

CustomOrder.create()

答案 1 :(得分: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()