我有一个模型(补丁)它有一个作者字段,我需要生成几个报告,总是过滤出作者不包含字符串'@ example.com'的行。鉴于补丁是在一个单独的django应用程序中定义的,我不想更改,我的想法是创建一个DB视图(例如,ExampleComPatch,使用非托管模型类访问),可以过滤掉所有行我不感兴趣,然后将报告方法放在新模型类下。如何将所有字段定义从一个模型类复制到另一个模型类?
为了避免代码重复,我让我的新模型类从Patch继承。这工作正常,只有一对夫妇的注意事项:
- 我认为需要有一个额外的“patch_ptr_id”一个在补丁中定义的所有列加,因为Django的认为我想真正的继承在DB以及
- 由于这是一个非管理模型类,使用该视图中的测试需要创建手动
然而,由于Django的认为我想真正的继承,每当我删除补丁的一个实例,它结束了贯通进入其所有子对象(例如,连接到它的ExampleComPatch中的行),这意味着与ExampleComPatch无关的测试现在可以是n如果需要从修补程序表中删除()行,则需要手动创建数据库视图。我想继承可能不是最好的选择,但我真的想避免代码重复,所以我想知道是否有办法将所有字段定义从Patch复制到ExampleComPatch。或者,甚至可能采用完全不同的方法,使我可以使用数据库视图(以降低报告方法的复杂性)和在补丁之外定义的报告方法,因为它们在那里没有多大意义。
这正是我想要的;不能相信我没有注意到关于继承的文档。谢谢! – 2011-05-10 21:18:00