我有两个对象Product
和Variation
。 Variation
在产品表中定义为ForeignKey
。我想设置Variation
的默认值,如果我没有创建Product Object
值为Variation
,我将使用该默认值。如果使用Variation
值创建产品,则不应使用默认值。
但是当我运行下面的代码时,它总是创建一个使用默认Variation
的对象。
models.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)
我正在尝试获得此输出:
而不是它返回此输出:
答案 0 :(得分:0)
您在根据我的理解进行变更之前创建产品,并且每次保存产品时,如果产品尚未具有现有变体,则为其提供“默认”变体。由于它在创建时没有任何变化,因此每个产品当然都有默认变体。 我认为你应该做的事情(如果我理解的话)是创造没有默认变化的产品。然后,当您获取给定产品的变体时,如果数据库中不存在,您将返回默认值