我是django的新手,我正在做我的第一个教育项目。我想用中间页面做一个动作,但我收到: KeyError at / admin / students / student /'action ' 情形:
应显示新页面,其中包含学生列表和列表框以选择组。 请解释我的错误在哪里。我的代码如下:
class UpdateGroupForm(forms.Form):
group = forms.ModelChoiceField(queryset=Group.objects.all().order_by('title'), required=False)
def update_group(modeladmin,request,queryset):
if 'change_group' in request.POST:
form=UpdateGroupForm(request.POST)
if form.is_valid():
group=form.cleaned_data['group']
updated_group=queryset.update(student_group=group)
counter=queryset.count()
modeladmin.message_user(request,u"У %s студентів було змненно групу на %s")%(counter,group)
return
if not form:
form= UpdateGroupForm()
return (request,'/students/change_group.html',{'students':queryset,'form':form,'title':u'Зміна групи'})
update_group.short_description=u'Перемістити у групу'
class StudenAdmin(admin.ModelAdmin):
action_form = UpdateGroupForm
actions = [update_group]
list_display = ['last_name','first_name' ,'ticket','student_group']
list_display_links = ['last_name','first_name']
list_editable = ['student_group']
ordering = ['last_name']
list_filter = ['student_group']
list_per_page = 10
search_fields = ['last_name','first_name' ,'ticket','notes']
def get_view_on_site_url(self, obj):
return reverse ('students_edit',kwargs={'pk':obj.id})
答案 0 :(得分:0)
我的网页代码:
{%extends" admin / base_site.html" %}
{%block content%}
<form action="" method="post">
{% csrf_token %}
{{ form }}
<p>Групу буде змінено у таких студентів:</p>
<ul>{{ students|unordered_list }}</ul>
<input type="hidden" name="action" value="update_group" />
<input type="submit" name="change_group" value="Зберігти" />
</form>
{% endblock %}
这是我模特的代码:
class Student (models.Model):
"""Student Model"""
class Meta (object):
verbose_name=u"Студент"
verbose_name_plural=u"Студенти"
first_name=models.CharField(max_length=256,blank=False,verbose_name=u"Ім'я")
last_name=models.CharField(max_length=256,blank=False,verbose_name=u"Прізвище")
middle_name=models.CharField(max_length=256,blank=True,verbose_name=u"По-батькові")
birthday=models.DateField(blank=False,verbose_name=u"Дата народження",null=True)
photo=models.ImageField(blank=True,verbose_name=u"Фото",null=True)
ticket=models.CharField(max_length=256,blank=False,verbose_name=u"Білет")
student_group=models.ForeignKey('Group',verbose_name=u"Група",blank=False,null=True,on_delete=models.PROTECT)
notes=models.TextField(blank=True,verbose_name=u"Додаткові нотатки")
def __unicode__(self):
return u"%s %s" % (self.first_name,self.last_name)
# post_delete signal deletes student photo
post_delete.connect(remove_photo,Student)
class Group (models.Model):
"""Group Model"""
class Meta(object):
verbose_name=u"Група"
verbose_name_plural=u"Групи"
title=models.CharField(max_length=256,blank=False,verbose_name=u"Назва")
leader=models.OneToOneField('Student',verbose_name=u"Староста",blank=True,null=True,on_delete=models.SET_NULL)
notes=models.TextField(blank=True,verbose_name=u"Додаткові нотатки")
def __unicode__(self):
if self.leader:
return u"%s(%s %s)"%(self.title,self.leader.first_name,self.leader.last_name)
else:
return u"%s"%(self.title)