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)
我的 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)