Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django';非类型';对象没有属性';指标集';_Django_Python 3.x_Django Forms - Fatal编程技术网

Python django';非类型';对象没有属性';指标集';

Python django';非类型';对象没有属性';指标集';,django,python-3.x,django-forms,Django,Python 3.x,Django Forms,我有以下问题,我实现了一个ajax函数,以便能够在创建问题时有一个相关的下拉列表,但问题出现在保存问题并将我发送到页面添加问题时,有人能告诉我我错了吗 错误: Traceback (most recent call last): File "C:\Users\Oficina\AppData\Local\Programs\Python\Python37-32\lib\site packages\django\core\handlers\exception.py", line 34, in inn

我有以下问题,我实现了一个ajax函数,以便能够在创建问题时有一个相关的下拉列表,但问题出现在保存问题并将我发送到页面添加问题时,有人能告诉我我错了吗

错误:

Traceback (most recent call last):
File "C:\Users\Oficina\AppData\Local\Programs\Python\Python37-32\lib\site 
packages\django\core\handlers\exception.py", line 34, in inner
response = get_response(request)
File "C:\Users\Oficina\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\django\core\handlers\base.py", line 115, in _get_response
response = self.process_exception_by_middleware(e, request)
File "C:\Users\Oficina\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\django\core\handlers\base.py", line 113, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\Oficina\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "C:\Users\Oficina\AppData\Local\Programs\Python\Python37-32\lib\site- 
packages\django\contrib\auth\decorators.py", line 21, in _wrapped_view
return view_func(request, *args, **kwargs)
File "C:\Proyectos\proyecto-educa-quiz\classroom\views\teachers.py", line 733, in question_change
form = QuestionForm(instance=question, quiz=quiz)
File "C:\Proyectos\proyecto-educa-quiz\classroom\forms.py", line 450, in __init__
self.fields['indicador'].queryset = self.instance.objetivo.indicador_set.order_by('id')
AttributeError: 'NoneType' object has no attribute 'indicador_set'
这是我的代码:

forms.py:

class QuestionForm(forms.ModelForm):

    class Meta:
        model = Question
        context_object_name = 'questions'  
        fields = ('number','objetivo','indicador','text','description', 'texto' ,'puntaje' ,'image','document','video')
        label = 'Pregunta'



    def __init__(self ,quiz ,*args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['objetivo'].queryset = Planificacion.objects.filter(asignatura_id = quiz.subject.id, curso_id = quiz.curso.id)
        self.fields['indicador'].queryset = PlanificacionIndicador.objects.none()
        self.fields['texto'].queryset = TextoQuestion.objects.filter(owner__id=quiz.owner.id)

        if 'objetivo' in self.data:
            try:
                objetivo_id = int(self.data.get('objetivo'))
                self.fields['indicador'].queryset = PlanificacionIndicador.objects.filter(objetivo_id=objetivo_id).order_by('indicador_evaluacion')
            except (ValueError, TypeError):
                pass
        elif self.instance.pk:
            self.fields['indicador'].queryset = self.instance.objetivo.indicador_set.order_by('id')

view.py:

@login_required
@teacher_required
def question_change(request, quiz_pk, question_pk):

    AnswerFormSet = inlineformset_factory(
        Question,  # modelo padre
        Answer,  # modelo base
        formset=BaseAnswerInlineFormSet,
        fields=('text' ,'is_correct'),
        min_num=2,
        validate_min=True,
        max_num=4,
        validate_max=True,
    )



    if request.method == 'POST':
        form = QuestionForm(quiz ,request.POST, request.FILES ,instance=question)
        formset = AnswerFormSet(request.POST, request.FILES, instance=question)
        if form.is_valid() and formset.is_valid():
            with transaction.atomic():
                form.save()
                formset.save()
            messages.success(request, 'Pregunta y respuestas guardadas exitosamente!')
            return redirect('teachers:quiz_change', quiz.pk)
    else:
        form = QuestionForm(instance=question, quiz=quiz)
        formset = AnswerFormSet(instance=question_pk)

    return render(request, 'classroom/teachers/question_change_form.html', {
        'quiz': quiz,
        'question': question,
        'form': form,
        'formset': formset
    })
models.py:

class Question(models.Model):
    quiz = models.ForeignKey(Quiz, on_delete=models.CASCADE, related_name='questions')
    number = models.IntegerField(verbose_name=("Número de la pregunta"))
    objetivo = models.ForeignKey(Planificacion, on_delete=models.SET_NULL, related_name='questions', verbose_name=('Objetivo aprendizaje'), blank=True, null=True)
    indicador  = models.ForeignKey(PlanificacionIndicador, on_delete=models.SET_NULL, related_name='questions', verbose_name=('Indicador Evaluación'), blank=True, null=True)
    text = models.CharField('Pregunta', max_length=255)
    texto= models.ForeignKey(TextoQuestion, on_delete=models.CASCADE, blank=True, null=True, verbose_name=('Texto'),help_text='Si tienes algún texto creado para esta prueba seleccionalo si no dejalo en blanco.')
    image = models.ImageField( null = True, upload_to='quiz_images',default=False, blank=True,verbose_name=('Imagen'))
    document = models.FileField(null=True, upload_to='quiz_images',default= False, blank=True,verbose_name=('Audio'))
    video = models.FileField(null=True, upload_to='quiz_images',default= False, blank=True,verbose_name=('Video'))
    description = models.CharField(max_length=255, null= True, blank=True, verbose_name=("Descripción") )
    puntaje = models.IntegerField(verbose_name=("Puntos"), help_text=("Puntaje que tendra cada pregunta que dara un total para la nota final del alumno."))

    objects = InheritanceManager()



    def __str__(self):
        return self.text

self.instance.objetivo
None
。创建一个
if…
子句并进行适当的检查。@JPG我该怎么做?您可以推荐一些文档,我仍在学习使用django框架编程。