Django OneToOneField 删除子项未将父项参数设置为 None?

Django OneToOneField deleting child doesn't set parents parameter as None?

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

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

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

基本上,每个产品都可以有一个可选的 discount.Now,假设我只有一个产品 p 有折扣 d。我想删除与产品 p 关联的折扣。所以,我使用

p.discount.delete()

虽然这使得 Discount.objects.all() return []p.discount 仍然是关联的折扣对象。

如何将此属性设置为 None

p.discount = None

更改数据库中的内容不会影响内存中的模型实例。在 1.8 中,您还可以轻松地从数据库重新加载对象:

p.refresh_from_db()

或 1.8 之前:

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