python - Django 数据库关系 - TypeError: 'ManyToOneRel' 对象不可迭代
问题描述
我用了 3 天时间尝试通过表“Questoes”的回复使用表“Alternativas”与数据库建立一对多的关系。我想制作一个测验系统,其中问题存储在数据库中的一个表中,答案在另一个表中,以这种方式在它们之间建立关系,但是在尝试拉取响应列时返回以下错误,接下来是打印。
模型.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)
视图.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('======================================================================')
解决方案
ManyToOneRel 不是一个字段。它是一个内部类,是关系实现的一部分,而不是您应该在模型中使用的东西。
您已经在这些模型之间建立了多对一的关系,因为您questao_id
在 Alternativas 中进行了定义。删除该 ManyToOneRel 定义并在您的视图中使用反向关系:
for a in questoes.alternativas_set.all():