我有Movie
,NowShowing
和UpComingMovie
三个模型。 NowShowing和UpComingMovie与电影有外交关系。
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)
每个模型中的三个都可以在管理员中加入:
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管理页面?
答案 0 :(得分: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