想象一个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()