Модельное поле Django, относящееся к нескольким моделям - PullRequest
0 голосов
/ 03 декабря 2011

Представьте себе сетку 5х5 (карта), каждое ее поле представляет определенный объект (это может быть монстр, дерево и т. Д.)

Итак, здесь мы имеем:

class Field(Model):
    x = y = PositiveIntegerField()
    content = ...(?)

Здесь возникает проблема.Вот альтернатива, но я думаю, что этот способ слишком запутан, особенно если у меня много разных идентификаторов контента.

class Field(Model):
    x = y = PositiveIntegerField()
    content = PositiveIntegerField()

    monster_rel = ForeignKey(Monster, null=True, blank=True)
    building_rel = ForeignKey(Monster, null=True, blank=True)
    nature_obj_rel = ForeignKey(Monster, null=True, blank=True)

и затем в представлении:

f = Field.objects.get(pk=1)
if f.content == 1:
    print "Monster %s of level %d" % (f.monster_rel.name, f.monster_rel.level)
elif f.content == 2:
    print "This is a %s" % f.building_rel.type
...

Есть лилучшее решение для этого?

РЕДАКТИРОВАТЬ Я хотел бы такие поля, как:

content_id = IntegerField()
content_rel = FieldRelatedToModelByContentId()

1 Ответ

0 голосов
/ 03 декабря 2011

Ну, звучит как родовые отношения - это именно то, что вы ищете.

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