我有两个对象,Product
和Variation
。Variation
在product表中定义为ForeignKey
。我想为Variation
设置一个默认值,如果不使用Variation
值创建Product Object
,则将使用该值。如果产品是用Variation
值创建的,它不应该使用默认值。在
但是当我运行下面的代码时,它总是使用默认值Variation
创建一个对象。在
模型.py
class Variation(models.Model):
product = models.ForeignKey(Product)
...
def product_post_saved_receiver(sender, instance, created, *args, **kwargs):
product = instance
variations = product.variation_set.all()
if variations.count() == 0:
new_var = Variation()
new_var.product = product
new_var.title = "Default"
new_var.price = product.price
new_var.save()
post_save.connect(product_post_saved_receiver, sender=Product)
我试图得到这个输出:
相反,它返回以下输出:
根据我的理解,您是在变体之前创建产品的,每次保存产品时,如果它还没有现有的变体,您就给它一个“默认”变体。因为它在创建时没有任何变化,当然每个产品都有默认的变体。 我认为你应该做的是(如果我理解正确的话)创建没有默认变化的产品。然后,当您获取给定产品的变体时,如果数据库中不存在,您将返回一个默认的变体
相关问题 更多 >
编程相关推荐