编辑:我非常想在不安装第三方应用的情况下完成此任务。看起来很简单/普通,有人会发布一行代码来实现这一目标吗? 无法在SQL中轻松完成此操作?在索引视图中使用自定义SQL命中数据库会不会是禁忌?
所以我有一个父类和两个子类。我想查询所有项目并返回快速列表。
from django.db import models
VIDEO_TYPE_CHOICES = (
('dvd', 'DVD'),
('downloaded', 'Downloaded'),
)
BOOK_TYPE_CHOICES = (
('e_book', 'E-Book'),
('print', 'Print'),
('audio', 'Audio Book'),
)
class Unit(models.Model):
name = models.CharField(max_length=200)
image = models.ImageField()
def __unicode__(self):
return self.name
class Video(Unit):
this_type = models.CharField(max_length=20, choices=VIDEO_TYPE_CHOICES, default='dvd')
run_time = models.CharField(max_length=200)
class Book(Unit):
this_type = models.CharField(max_length=20, choices=BOOK_TYPE_CHOICES, default='print')
pages = models.CharField(max_length=200)
我想要做的就是显示所有"单位"在我的索引页面上有this_type。[/ p>
如:
Lord Of The Rings,lotr.jpeg,DVD
Treasure Island,treasure_island.jpeg,Print
但是,如果我执行标准" gimme所有单位"我只能访问单位名称和图像属性。查询...不是this_type。当然,除非我对该对象做出假设,并尝试使用object.book.this_type例如......如果该特定对象不是Book,则抛出异常。
我已经研究了一段时间了......虽然我可以找到几个相关问题和几种可能的方法(例如通用关系?),但我找不到一个可以与我联系的例子自己的用例......或完全了解这件事。我现在只有这个东西(Python和Django)大约一个星期......我学得最好的时候我可以做一些工作,了解所有运动部件,然后建立在这种理解的基础上。
有鉴于此,如果有人能给我一个如何生成前面提到的对象列表的例子,我将非常感激!
漂亮的PLS ???
答案 0 :(得分:0)
我建议使用django app model_utils
OOP通常不是模型的最佳设计模式,但是如果你要去那条路线,那么model_utils会有一个InheritanceManager,它完全符合你的要求。