【发布时间】:2016-08-29 00:29:51
【问题描述】:
Django Docs 使用这个例子来演示多表继承:
from django.db import models
class Place(models.Model):
name = models.CharField(max_length=50)
address = models.CharField(max_length=80)
class Restaurant(Place):
serves_hot_dogs = models.BooleanField(default=False)
serves_pizza = models.BooleanField(default=False)
如果我最初是这样构建 Restaurant 类的:
class Restaurant(models.Model):
name = models.CharField(max_length=50)
address = models.CharField(max_length=80)
serves_hot_dogs = models.BooleanField(default=False)
serves_pizza = models.BooleanField(default=False)
然后在已经创建了一堆 Restaurant 对象之后,我意识到使用 MTI 会更好,有没有一种好方法可以在事后创建父 Place 类并迁移数据?
【问题讨论】:
-
你的意思是在代码可读性或性能方面更好?也许你应该看看这篇文章:stackoverflow.com/questions/23466577/…
-
我不太确定你的问题,如果你想拥有父模型对象并且不想为它创建表,你可以使用。 'class Meta: Abstract = True'
-
我的意思是我想转换我当前的结构以使用多表继承。例如,我现在想添加一个
Office模型,它也有名称和地址,我希望所有地址都是唯一的;所以我想添加 Place 和 Office 类并迁移我现有的 Restaurant 数据以使用新的数据结构。 -
@Amar:
abstract必须全部小写。
标签: django models multi-table-inheritance