모든 레벨에서 장고 코드를 최대한 일반화하기 위해 코드를 다시 작성하려고합니다. 다음 모델이 있다고 가정 해보십시오.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를보고 있다고 가정 해 봅시다. 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