模型内的Django管理模型
问题描述:
我想制作投票应用程序。会有民意调查的一些问题,每个问题都有一些选择。有没有办法如何在投票中添加问题,然后在管理员表单中选择问题(如嵌套内联)?模型内的Django管理模型
class Poll(models.Model):
poll_title = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Question(models.Model):
poll = models.ForeignKey(Poll)
question_text = models.CharField(max_length=200)
class Choice(models.Model):
question = models.ForeignKey(Question)
choice_text = models.CharField(max_length=200)
答
一般来说,管理员网站非常适合开发人员检查当前网站数据并调整已有内容。但是,当您尝试创建应用程序功能时,例如创建整个民意调查,那就是您想要开始编写自己的代码的地方。您的成品不应该使用管理站点,就像最终用户不应直接与数据库交互一样。
此时,我会创建一个需要管理员(或员工或您希望创建的任何权限组)的访问权限的网站部分,并设置您自己的表单来创建民意调查,问题和答案,并将它们正确链接以在数据库中创建正确的Poll,Question和Choice对象。
答
是的,但在一个自定义应用程序的帮助下。看看django-nested-inline包。我一直在使用它一段时间,到目前为止这么好。
class ChoiceInline(NestedTabularInline):
model = Choice
class QuestionInline(NestedTabularInline):
model = Question
inlines = [ChoiceInline, ]
class PollAdmin(NestedModelAdmin):
model = Poll
inlines = [QuestionInline, ]