Django模型领域涉及几个模型

时间:2011-12-03 14:26:31

标签: django orm models

想象一个5x5网格(地图),它的每个字段代表一个特定的对象(它可以是一个怪物,一棵树等)。

所以,我们在这里:

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

这里出现了问题。这是替代方案,但我认为这种方式太乱了,特别是如果我有许多不同的内容ID。

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 :(得分:0)

嗯,generic relations之类的声音正是您正在寻找的。