Связь с базой данных Django - Ошибка типа: объект ManyToOneRel не повторяется
Я 3 дня пытаюсь установить связь Один-ко-многим с базой данных, используя таблицу "Alternativas" через resposta таблицы "Questoes". Я хочу создать систему викторин, где вопросы хранятся в таблице в БД, а ответы находятся в другой таблице, и таким образом устанавливаются отношения между ними, но при попытке получить столбец ответа возвращается следующая ошибка Следите за распечаткой.
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 ответ
Решение
ManyToOneRel это не поле. Это внутренний класс, часть реализации отношений, а не то, что вы должны использовать в своих моделях.
У вас уже есть отношения многие-к-одному между этими моделями, потому что вы определили questao_id
в альтернативе. Удалите это определение ManyToOneRel и, по вашему мнению, используйте обратное отношение:
for a in questoes.alternativas_set.all():