在django-nonrel中使用ForeignField的ListField

时间:2012-12-31 12:51:29

标签: django mongodb django-nonrel listfield django-mongodb-engine

似乎很难找到在django-mongo-engine中使用ListField和ForeignField的完整示例..我的逻辑如下所示,

class GameSession(models.Model):
    # id => token, is global unique random code
    id = models.CharField(max_length=45, primary_key=True)
    def save(self, *args, **kwargs):     
        if not self.pk:
            self.pk = util.get_random_string(32)  
        super(GameSession, self).save(*args, **kwargs)

class GameUser(models.Model):
    ...
    game_session = fields.ListField(models.ForeignKey(GameSession))

在其他地方,我喜欢这个,

game_session = GameSession()
game_session.save()
self.game_session.append(game_session)
self.save()

所以在db中,字段self.game_session就像

(Pdb) self.game_session
[u'GameSession object']

它无法存储game_session元素的PK。如何正确使用ListField(插入,检索为外部模型,删除)?或者它仍然不支持带有ForeignField的ListField?

1 个答案:

答案 0 :(得分:1)

使用:

self.game_session.append(game_session.id)

将条目保存到ListField时,使用ForeignKey并不是“自动”,但是当您需要引用这些对象时,ForeignKey将为您提取对象。