Django admin 后台操作数据库以问卷调查为例

Django的后台功能是很强大的,我先简单的写一点(本人新手)。

1,先创建数据库(我用的python2.7):

  在字段里显示的汉字是为了方便后台管理,class是在后台以汉字的形式显示表名,为了让通过1,2,3,来判断类型的以下拉框显示,

class Thequestion(models.Model):
name=models.CharField(u'问卷名',max_length=30)
number=models.IntegerField(u'问卷填写人数',default=0)
create_time=models.DateTimeField(auto_now_add=True)

def __unicode__(self):
return self.name

class Questionproblem(models.Model):
questions=models.ForeignKey(Thequestion)
problem_name=models.CharField(u'题的名称',max_length=200)
   problem_type=((u'1',u'儿童'),(u'2',u'少年'),(u'3'u'青年‘)) #和下面的choices配合可以在后天以下拉按钮显示
Ques_type=models.BooleanField(u'题的类型',default=False,choices=problem_type)#为False时为单选题

  
  class Meta:
  verbose_name = '问题表'
  verbose_name_plural = '问题表'

def __unicode__(self):
return self.problem_name

class Choice(models.Model):
question=models.ForeignKey(Questionproblem)
choice_text=models.CharField(u'选项名',max_length=200)
votes=models.IntegerField(u'选择的个数',default=0)

def __unicode__(self):
return self.choice_text

2,在admin.py里进行操作,暂时不知道如何将问卷名+题+选项整合到同一个页面上
class QuestionInline(admin.TabularInline):#为了在问卷页面输入你的问卷题目这是默认有6题
model = Questionproblem
extra = 6


class ChoiceInline(admin.TabularInline):每题有4个选项
model = Choice
extra = 4


class QuestiionAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['problem_name']}),#在后台可以看到问题名称
(None, {'fields': ['Ques_type']}),#题的类型
]
inlines = [ChoiceInline]#题对应的选项


class TheAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['name']}),# 问卷的名称
(None, {'fields': ['number']}),#问卷答题数量

]
inlines = [QuestionInline]#问卷对应的题


admin.site.register(Questionproblem, QuestiionAdmin)
admin.site.register(Thequestion, TheAdmin)
admin.site.register(Choice)
 




posted @ 2017-10-10 13:22  少年喜雨  阅读(855)  评论(0)    收藏  举报