1. None

    06.03.2010

    0 ↑
    2 ↓
    Есть модель O, от нее наследуются модели A, B, C. Как можно из O получить объект типа
    А, В, С?
  2. Есть папа, у него трое детей. Как из фотографии папы сделать фотографию любого ребенка? Мне кажется, что никак :)

  3. None

    06.03.2010

    0 ↑
    1 ↓
    Почему любого, каждый объект - объект класса A, B, C, а О включает общие свойства.
  4. У одного ребенка папины глаза, у другого - уши и нос, а у третьего переопределены вообще все свойства, и он похож на соседа сверху.

    Честно говоря, если бы Вы чуть поконкретнее написали, что Вам нужно сделать, то может и решение бы нашлось. А общие слова - отличная пища для тролликов типа меня :)

  5. IMHO или в базовую модель засунуть ContentType ....
    или http://stackoverflow.com/questions/349206/how-do-i-find-the-concrete-class-of-a-django-model-baseclass например .....
  6. None

    07.03.2010

    0 ↑
    0 ↓
    Задача такая.
    Есть объект - игровой сервер, хранит карту, кол-во игроков, ип, порт.....Также есть объект игры, карты, игрока. От них наследуются объекты под разные движки(source, gamespy....), у каждого движка свой протокол обновления информации, следовательно есть какие-то свои поля....
    Требуется сделать обновление, что-то типа
    servers = Server.objects.all()
    for server in servers:
    server.update_info()
    server.save()
    Метод update_info отправляет запрос на сервер, для каждого движка разный.
    Еще при отображении информации о сервере/игре/карте/игроках тоже хочется отображать эти "свои" поля.
    В данный момент думаю хранить отдельным полем движек, если нельзя получить объект наследник...

    P.S. Объект Server сам по себе используется только для выборки, любой сервер относится к наследованной моделе.
  7. ziro

    07.03.2010

    0 ↑
    0 ↓
    По наследникам - последний пример из параграфа - http://docs.djangoproject.com/en/dev/topics/db/models/#id7
  8. None

    07.03.2010

    0 ↑
    0 ↓
    Ну к этому я и склоняюсь + хранить дополнительное поле с "движком", думал может можно без лишнего поля.
    Еще вопрос, а можно ли переопределить конструктор класса, чтобы он возвращал уже наследованый объект, как правильнее сделать?
  9. truetug.ya.ru

    09.03.2010

    0 ↑
    0 ↓
    Ищи по запросу «subclassing queryset». Я в итоге использовал вот такой вариант, но возможно уже что-то поинтересней придумали.

Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.