0
我試圖重寫我的Django代碼,使其在所有級別上儘可能通用。說我有以下型號:Django以通用方式上下關係
class Tvshow(models.Model):
pass
class Season(models.Model):
tvshow = models.ForeignKey(Tvshow)
class Episode(models.Model):
season = models.ForeignKey(Season)
一個tvshow有四季之分,一個賽季有發作。爲了簡單起見,我留下了所有其他信息。
我的任何這些對象的詳細視圖現在可以通過使用DetailView來處理任何模型。但我也想展示一個對象的關係,無論是父母還是孩子。假設您正在查看電視節目。我無法調用tvshow.season_set.all()來顯示此信息,因爲我的模板不知道它處理的是tvshow(也不是tvshows有季節)。相反,我想能夠做到這一點: object.children_set.all()。
這樣我就可以提供我的視圖任何這3種模型,它會工作。這可能嗎?
p.s.我知道這個對象。部分作品,但孩子們也會參與工作嗎?有一個醜陋的黑客我能夠想出:使用relation_name屬性來命名所有關係的子項。我想它會起作用,但這不是我想要採取的方向。
views.py:
from django.views.generic.detail import DetailView
class ObjectDetailView(DetailView):
template_name = "detail.html"
urls.py
from tvshows.views import ObjectDetailView
from tvshows.models import Tvshow
urlpatterns = patterns('tvshows.views',
url(r'^(?P<pk>\d+)/$', ObjectDetailView.as_view(model = Tvshow), name='detail'),
)
感謝您的幫助。這會起作用,壞它總是要這樣,因爲這樣我仍然需要在某處定義規則。這意味着它不是真正的通用。 我想我會解決它通過爲每個將從一個通用的父母繼承不同的模板。 – tBuLi 2012-07-29 11:40:42