2017-02-28 66 views
2

我有三種型號的Movie,NowShowingUpComingMovie。 NowShowing和UpComingMovie與Movie有外鍵關係。顯示管理中的對象相關設置對象

class Movie(models.Model): 
    name = models.CharField(max_length=254, unique=True) 
    synopsis = models.TextField() 
    release_date = models.DateField() 
    director = models.ManyToManyField(MovieDirector) 
    writer = models.ManyToManyField(MovieWriter) 
    actor = models.ManyToManyField(MovieActor) 
    censor_rating = models.PositiveIntegerField(choices=CENSOR_TYPE) 

    @property 
    def is_screening(self): 
     if self.nowshowing_set.all().count() > 0: 
      return True 
     else: 
      return False 


class NowShowing(models.Model): 
    movie = models.ForeignKey(Movie) 
    show_time = models.DateTimeField() 


class UpComingMovie(models.Model): 
    movie = models.ForeignKey(Movie) 

每三個型號可以在管理被accesed:

class MovieAdmin(admin.ModelAdmin): 
    list_display = ('name', 'release_date', 'censor_rating', 'is_screening') 

    class Meta: 
     model = Movie 

admin.site.register(Movie, MovieAdmin) 
admin.site.register(NowShowing) 
admin.site.register(UpComingMovie) 

的問題是,我必須去NowShowing或UpComingMovie管理頁面創建/修改的對象。是否可以顯示每個電影相關設置字段(NowShowing或UpComingMovie)以顯示在Movie對象詳細管理頁面本身中,以便可以直接從Movie obj創建/更改其相關字段,而無需轉到NowShowing或Upcoming admin頁面?

回答

2

是的,它很可能由於TabularInline(或StackedInline)

class UpcomingInline(admin.TabularInline): 
    model = UpComingMovie 

class NowShowingInline(admin.TabularInline): 
    model = NowShowing 

class MovieAdmin(admin.ModelAdmin): 
    list_display = ('name', 'release_date', 'censor_rating', 'is_screening') 
    inlines = [UpcomingInline,NowShowingInline] 
    class Meta: 
     model = Movie