Django数据库关系 - TypeError:'ManyToOneRel'对象不可迭代

时间:2018-05-25 14:34:38

标签: python django orm django-queryset

我正在尝试使用“Alternativas”表通过“Questoes”表的resposta与数据库建立一对多的关系。我想创建一个测验系统,其中问题存储在数据库的表中,答案在另一个表中,并以这种方式建立它们之间的关系,但在尝试拉回响列时返回以下错误,按照印刷品。

enter image description here

models.py:

class Questoes(models.Model):
    id = models.IntegerField(max_length=10, primary_key=True)
    enunciado = models.CharField(max_length=255, null=False)
    alternativa_correta = models.CharField(max_length=255, null=True)
    resposta = models.ManyToOneRel('resposta', to='Alternativas', 
    field_name='descricao')

class Alternativas(models.Model):
    id = models.IntegerField(max_length=10, primary_key=True)
    questao_id = models.ForeignKey('Questoes', on_delete=CASCADE, 
    db_column="questao_id")
    descricao = models.CharField(max_length=255, null=True)

Views.py:

def dashboard(request):
    if request.method == 'POST':
        questoes = {}
        questoes['questoes'] = Questoes.objects.get(id=1)
        print('=======================================================================')
        print(questoes)
        print('=======================================================================')
        for a in questoes.resposta:
            print(a)
        print('======================================================================')

1 个答案:

答案 0 :(得分:1)

ManyToOneRel不是一个字段。它是一个内部类,是关系实现的一部分,而不是你应该在模型中使用的东西。

您已经在这些模型之间建立了多对一关系,因为您在Alternativas中定义了(@supports not (display:grid)) or (@media screen and (max-width:700px)){ /*my stylesheet*/ } 。删除ManyToOneRel定义并在视图中使用反向关系:

questao_id