【问题标题】:ListField with ForeignField in django-nonreldjango-nonrel 中带有 ForeignField 的 ListField
【发布时间】:2012-12-31 12:51:29
【问题描述】:

似乎很难找到在 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()

所以在数据库中,字段 self.game_session 类似于

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

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

【问题讨论】:

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


    【解决方案1】:

    用途:

    self.game_session.append(game_session.id)
    

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

    【讨论】:

    • 谢谢。顺便说一句,如果我没有获得属性值,是否会像其他 django 模型对象一样进行惰性评估,不会触发 db 访问?
    • 我猜是这样,但我还没有实际测试来确认它。
    猜你喜欢
    • 2011-04-22
    • 2011-07-24
    • 1970-01-01
    • 1970-01-01
    • 2013-09-11
    • 2011-10-23
    • 2011-12-08
    • 2011-04-22
    相关资源
    最近更新 更多