python - Django 模型继承 : Delete subclass keep superclass

标签 python django django-models django-orm

在 Django 中处理模型继承时,是否可以删除模型子类的实例,而不删除父类(super class)本身?

使用 Django example ,您可以只删除 Resturaunt 对象并保留 Place 对象吗?

最佳答案

昨天我正在寻找这个问题的答案,然后我想到了这个解决方案,它足以解决我的问题,但可以根据需要扩大规模。

假设你有一个 Restaurant 和一个 Place django 模型,只删除一个餐厅而不触及 Place 表内的行的方法是创建一个像这样的“假”餐厅模型:

class FakeRestaurant(models.Model):
    place_ptr = models.PositiveIntegerField(db_column="place_ptr_id", primary_key=True)
    serves_hot_dogs = models.BooleanField()
    serves_pizza = models.BooleanField()

    class Meta:
        app_label = Restaurant._meta.app_label
        db_table = Restaurant._meta.db_table
        managed = False

现在,您可以从该表中检索对象,就好像它没有绑定(bind)外部关系一样:

place = Place.objects.get(pk=1)
restaurant = Restaurant.objects.get(pk=1)
fake_restaurant = FakeRestaurant.objects.get(pk=1)
fake_restaurant.delete()

fake_restaurant 和 restaurant 将不复存在,地方将保持不变。

干杯, 大卫

关于python - Django 模型继承 : Delete subclass keep superclass,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10287169/

相关文章:

python - 如何解析xsd :dateTime format?

python - 从特定设备python读取输入

django objects.get() 找不到结果

django - 在 Django Forms 中访问 request.GET 或 request.POST

python - Django:日期时间查询

python - 为什么 Julia 不能超集 python?

python - 如何在 python 中翻译 RSA 公钥的 Perl 代码?

Django/表单 : How can i validate initial data against received data (if match)?

python - 更改 Django 表单中的字段,覆盖 clean()

python - Django 立即保存并返回对象(使用自定义 pk)