-
Есть модель O, от нее наследуются модели A, B, C. Как можно из O получить объект типа
А, В, С? -
Есть папа, у него трое детей. Как из фотографии папы сделать фотографию любого ребенка? Мне кажется, что никак :)
-
Почему любого, каждый объект - объект класса A, B, C, а О включает общие свойства.
-
У одного ребенка папины глаза, у другого - уши и нос, а у третьего переопределены вообще все свойства, и он похож на соседа сверху.
Честно говоря, если бы Вы чуть поконкретнее написали, что Вам нужно сделать, то может и решение бы нашлось. А общие слова - отличная пища для тролликов типа меня :)
-
IMHO или в базовую модель засунуть ContentType ....
или http://stackoverflow.com/questions/349206/how-do-i-find-the-concrete-class-of-a-django-model-baseclass например ..... -
Задача такая.
Есть объект - игровой сервер, хранит карту, кол-во игроков, ип, порт.....Также есть объект игры, карты, игрока. От них наследуются объекты под разные движки(source, gamespy....), у каждого движка свой протокол обновления информации, следовательно есть какие-то свои поля....
Требуется сделать обновление, что-то типа
Метод update_info отправляет запрос на сервер, для каждого движка разный.servers = Server.objects.all()
for server in servers:
server.update_info()
server.save()
Еще при отображении информации о сервере/игре/карте/игроках тоже хочется отображать эти "свои" поля.
В данный момент думаю хранить отдельным полем движек, если нельзя получить объект наследник...
P.S. Объект Server сам по себе используется только для выборки, любой сервер относится к наследованной моделе. -
По наследникам - последний пример из параграфа - http://docs.djangoproject.com/en/dev/topics/db/models/#id7
-
Ну к этому я и склоняюсь + хранить дополнительное поле с "движком", думал может можно без лишнего поля.
Еще вопрос, а можно ли переопределить конструктор класса, чтобы он возвращал уже наследованый объект, как правильнее сделать? -
Ищи по запросу «subclassing queryset». Я в итоге использовал вот такой вариант, но возможно уже что-то поинтересней придумали.
Внимание! Это довольно старый топик, посты в него не попадут в новые, и их никто не увидит. Пишите пост, если хотите просто дополнить топик, а чтобы задать новый вопрос — начните новый.


