Группируйте объекты столбца my-sql модели, имеющие одинаковые данные на стороне администратора Django

#python #mysql #django #django-admin

#python #mysql #django #django-admin

Вопрос:

У меня есть модель со следующим определением

 class exam_questions(models.Model):
    exam_name=models.ForeignKey(exam,on_delete=models.CASCADE)
    question=models.ForeignKey(questions,on_delete=models.CASCADE)

class Meta:
    db_table = 'examquestions'
    unique_together = (("exam_name", "question"),)

def __str__(self):
    return '%s - %s' % (self.exam_name, self.question)
  

Данные в таблице sql будут выглядеть следующим образом

  ---- ---------------- ------------- 
| id | exam_name      | question    |
 ---- ---------------- ------------- 
|  2 |          test2 |          29 |
|  3 |          test1 |          41 |
|  6 |          test2 |          40 |
|  7 |          test1 |          42 |
 ---- ---------------- ------------- 
  

В Django admin я ищу объекты модели следующим образом:

тест2-29

тест1-41

тест2-40

тест1-42

Теперь я хочу сгруппировать вопросы одного и того же теста и хочу, чтобы они выглядели так, как показано ниже:

тест2-29,40

тест1-41,42

Я пытался использовать обычные строковые операции python, ни одна из них не работала на amdin django, вместо этого выдавала мне ошибки.

Есть ли способ сделать это. Любая помощь приветствуется.

Спасибо

Комментарии:

1. Почему вы пытаетесь сделать это в django admin? Если вы сгруппируете подобные вопросы в admin, редактировать их позже будет невозможно. Вместо этого вы можете создать Exam модель и заменить exam_name поле внешним ключом к ней. Затем вы можете использовать inlines для редактирования вопросов для каждого экзамена.

2. Я хочу управлять отображением и проверял, есть ли для этого возможность. Люди, которые используют его без знания объекта и модели, должны легко его получить. таково намерение. Было бы здорово, если бы была возможность ввести несколько записей для ссылочного поля

3. Не уверен, чего вы пытаетесь достичь. Можете ли вы привести какой-нибудь пример того, как должен выглядеть список вопросов в django?

4. Как я уже указывал выше, exam_questions может иметь название экзамена и вопросы. с одним полем экзамена может быть связано несколько вопросов. Я должен иметь возможность добавлять все вопросы по 1 экзамену за раз или, по крайней мере, должен иметь возможность видеть их вместе в admin

Ответ №1:

 You can override objects manager in this way  :- 
class ExamManager(models.Manager):
    def get_queryset(self):
       return super(ExamManager,self).get_queryset().group_by('exam_name')

class exam_questions(models.Model):
    exam_name=models.ForeignKey(exam,on_delete=models.CASCADE)
    question=models.ForeignKey(questions,on_delete=models.CASCADE)
    objects = ExamManager()
  

Комментарии:

1. Получена ошибка, подобная тому, что объект ‘QuerySet’ не имеет атрибута ‘group_by’. кажется, не работает