Получите вопросы и общие результаты от двух модельных классов - PullRequest
0 голосов
/ 06 октября 2011
class InspectionQuestion(models.Model):
    item = models.ForeignKey(InspectionItem)
    question = models.CharField(max_length=200)
    question_pass = models.BooleanField()    

class InspectionResult(models.Model):
    question = models.ForeignKey(InspectionQuestion)
    vehicle = models.ForeignKey(Vehicle)
    result = models.BooleanField()

Из приведенного выше класса я хотел бы получить список вопросов, на которые даны ответы по каждому транспортному средству, а затем по каждому вопросу показать, всегда ли результат был успешным (question_pass == result), не выполнен.(результат == Неверно), решен (раньше это был сбой, но позже был изменен на прохождение).

Моя главная проблема, которую я предполагаю, состоит в том, что на каждое транспортное средство может быть дан ответ на один и тот же вопрос несколько раз, поэтому янужен способ учитывать это в запросе.У меня действительно нет идеи, как это запустить, поэтому я надеюсь, что у кого-то есть идея.Спасибо.

1 Ответ

0 голосов
/ 07 октября 2011

Кажется, какой-то SQL оказался полезным ... если у кого-то есть идея, как это сделать в Django ORM, я был бы счастлив попробовать эту идею.Вот что у меня есть:

Я наткнулся на эту удобную ссылку , показывающую, как запустить слегка сложный SQL из Django.Таким образом, используя этот запрос, я использовал этот запрос, чтобы вывести вопросы и ответы для каждого из них:

question_list = query_to_dict("""
  SELECT question_id, question, item, array_agg(pass_fail) AS results
  FROM "vehicles_inspectionresult"
  INNER JOIN "vehicles_inspectionquestion" ON 
  ("vehicles_inspectionresult"."question_id" = "vehicles_inspectionquestion"."id")
  INNER JOIN "vehicles_inspectionitem" ON 
  ("vehicles_inspectionquestion"."item_id" = "vehicles_inspectionitem"."id")
  WHERE "vehicles_inspectionresult"."vehicle_id" = %s
  GROUP BY item, question_id, question
  ORDER BY item;
""", vehicle.id)

Переменная pass_fail является дополнением к классу InspectionResult ... она предназначена для определения, является ли ответявляется правильным или нет, сравнивая ответ на вопрос с тем, что было опубликовано при сохранении.

Остальное - в основном шаблонный код для группировки вопросов в их конкретные группы элементов с использованием тега шаблона {% regroup %} Джанго, но основная логика вНа мой взгляд, это линия выше.Я надеюсь, что это поможет кому-то в будущем.

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