我有一个模型,在实例化时,需要为自己的外部关系创建新实例。这是一个例子:
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)
不幸的是,这个类方法没有按设计工作。
答案 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()