Как заставить страницу администратора django делать именно эту вещь? - PullRequest
0 голосов
/ 06 ноября 2011

Я использую страницу администратора django, чтобы задавать вопросы в базу данных.

Мой models.py таков:

из django.db, импорт моделей

# Create your models here.

class Question(models.Model):
    question_name = models.CharField(max_length=200)
    question_type = models.CharField(max_length=20)
    def __unicode__(self):
            return self.question_name


class PythonQuestion(models.Model):
    question_no = models.ForeignKey(Question)
    question_text = models.TextField(max_length=1000)
    question_testcase = models.TextField(max_length=1000)
    question_difflevel = models.CharField(max_length=20)

Я хочу внести эти конкретные изменения в мою страницу django-admin: -

  1. На данный момент, когда я могу добавить содержимое как в модель Вопроса, так и в модель PythonQuestion со страницы администратора.Я хочу, чтобы я мог писать в модель «Вопрос», а затем перейти на страницу, где я могу записать данные в модель PythonQuestion.Мои страницы работают и работают;все, что мне нужно, это направление ссылок.

  2. Я хочу загрузить ответы на все вопросы в каком-либо формате файла (не имеет значения, какой формат здесь. Предположим, текстовый файл).Как мне это сделать на странице администратора?

1 Ответ

1 голос
/ 06 ноября 2011

Концептуально я думаю, что это может быть.Вы можете узнать больше об этом в django docs , но по сути Django имеет 3 типа наследования; abstract, multitable и proxy , которые полезны в различных ситуациях:

  • abstract наследование полезно, когда ваш базовый класс никогда не нуждается в создании самого экземпляра (то есть базовая модель не имееттаблица, но у всех детей есть таблицы)
  • наследуемое наследование полезно, когда у вас есть базовая модель, которая полезна сама по себе, но может быть расширена (т. е. у базовой модели есть таблица, а у всех ее детей есть таблицы)
  • прокси полезен, когда вы хотите расширить только функциональность родительской модели (т. Е. У базовой модели есть таблица, но у дочерних элементов нет таблиц)

и краткий пример (multi table):

class Answer(models.Model):
    answer_text = models.CharField(...)

class Question(models.Model):
    """What all questions have in common"""
    title = models.CharField(...)
    text = models.CharField(...)
    answer = models.ForeignKey(Answer)

class PythonQuestion(Question):
    """What specifics a python question might have"""
    python_version = models.CharField(...)

Вы можете ввести все данные за один раз в администраторе django (это одинаково как для множественного, так и для абстрактного наследования).Кроме того, у вас есть ответ на каждый вопрос.Эти ответы могут быть загружены через фикстуры, если это необходимо (или вручную введены через администратора)

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