Запрос Django с несколькими внешними ключами не работает - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь получить запись из таблицы Ответ, которая соответствует внешним ключам Ученик и Задача.Проблема внешнего ключа, хотя и не дана;Результат доступен вместо.Я не могу заставить свой запрос работать.Кто-нибудь может указать мне, что я делаю неправильно?

#Model classes:
class Answer(models.Model):
    problem = models.ForeignKey('Problem', on_delete=models.CASCADE,
        blank=False, help_text="Problem ID")
    learner = models.ForeignKey('Learner', on_delete=models.CASCADE,
        blank=False, help_text="Learner ID")
    try_count = models.IntegerField(blank=False, default=0,
        help_text="Number of times the problem was attempted")
    correct = models.CharField(max_length=1, blank=False, default='0',
        choices=Constant.CORRECT,
        help_text="Indicator whether the problem was answered correctly or not")
    ...

class Problem(models.Model):
    outcome = models.ForeignKey('Outcome', on_delete=models.CASCADE,
        blank=False, help_text="Outcome ID")
    ...

class Outcome(models.Model):
    name = models.CharField(max_length=32, blank=False, unique=True,
        help_text="Outcome name")
    ...

class Learner(models.Model):
    anonymous_id = models.CharField(max_length=32, blank=False,
        help_text="Anonymous ID")
    ...

# Query
answer = Answer.objects.filter(learner=learner,
    problem__outcome=outcome).order_by('correct', 'try_count')[0]

Спасибо!

1 Ответ

0 голосов
/ 11 февраля 2019

Я думаю, что у вас есть результат как ID, а не как объект.Если это так, попробуйте изменить запрос следующим образом:

answer = Answer.objects.filter(learner=learner,
problem__outcome__id=outcome).order_by('correct', 'try_count')[0]

Если вы используете учащегося в качестве идентификатора, а результат в качестве идентификатора, попробуйте следующее:

answer = Answer.objects.filter(learner__id=learner,
problem__outcome__id=outcome).order_by('correct', 'try_count')[0]

Пожалуйста,обратите внимание, что я добавил __id после ученика и результата.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...