删除子项的Django OneToOneField没有将parent参数设置为None?

时间:2015-06-10 16:55:50

标签: django django-models

我的Django应用程序中有两个模型

class Product(models.ModelField):
  name = ...

class Discount(models.ModelField):
  product_id = models.OneToOneField(Product)

基本上,每个产品都可以有一个可选的折扣。现在,假设我只有一个产品p附加折扣d。我想删除与产品p相关的折扣。所以,我用

p.discount.delete()

虽然这会使Discount.objects.all()返回[],但p.discount仍然是关联的折扣对象。

如何将此属性设置为None

1 个答案:

答案 0 :(得分:1)

p.discount = None

更改数据库中的某些内容会影响内存中的模型实例。在1.8中,您还可以轻松地从db:

重新加载对象
p.refresh_from_db()

或1.8之前:

p = Product.objects.get(pk=p.pk)