小编fra*_*tiz的帖子

Python相互依赖的类(循环依赖)

我搜索了很多,但我发现的主要是python中递归编程的例子.所以这里有一个问题:

我怎样才能做到这一点?

class A:
    b = B()

class B:
    a = A()
Run Code Online (Sandbox Code Playgroud)

python class circular-dependency

16
推荐指数
1
解决办法
2365
查看次数

当复数形式等于奇异形式时,模型复数的Django翻译

你怎么能告诉ugettext复数形式不是单数形式,即使它们在英语中是相同的?

class News(models.Model):
    class Meta:
        verbose_name = _('news')
        verbose_name_plural = _('news')
Run Code Online (Sandbox Code Playgroud)

makemessages给出了这个:

#: models.py:134, models.:135
msgid "news"
msgstr "noticia"
Run Code Online (Sandbox Code Playgroud)

拆分此定义会使用"重复消息定义..."来破坏编译.

我找到的解决方法:

  • 在复数形式的末尾添加一个空格(我正在使用的那个)
  • 在世界语中撰写申请文本?开玩笑.

django

5
推荐指数
1
解决办法
861
查看次数

SQLAlchemy 相当于具有嵌套关系的 select_lated 和 prefetch_lated

使用 Django ORM 的此查询需要 0.03 秒:

entry = ModelA.objects.select_related(
            'modelB',
            'modelC',
        ).prefetch_related(
            'modelB__modelD',
            'modelE',
            'modelE__modelF',
            'modelE__modelF__modelG',
            'modelE__modelF__modelG__modelH1',
            'modelE__modelF__modelG__modelH2',
            'modelE__modelF__modelG__modelH3',
            'modelE__modelF__modelI',
            'modelE__modelF__modelJ',
        ).get(id=1)
Run Code Online (Sandbox Code Playgroud)

我在 SQLAlchemy 中想出的等效方法需要 0.12 秒*:

entry = session.query(ModelA) \
        .options(joinedload(ModelA.modelB).joinedload(ModelB.modelD)) \
        .options(subqueryload(ModelA.modelE).subqueryload(ModelE.modelF)
                .subqueryload(ModelF.modelG).subqueryload('*')) \
        .options(subqueryload(ModelA.modelE).subqueryload(ModelE.modelF)
                .subqueryload(ModelF.modelI)) \
        .options(subqueryload(ModelA.modelE).subqueryload(ModelE.modelF)
                .subqueryload(ModelF.modelJ)) \
        .filter(ModelA.id = 1) \
        .first()
Run Code Online (Sandbox Code Playgroud)

*我意识到在 Django 中我查询了我并不真正需要的 modelC。

  • 如何通过字段,和替换subqueryload('*')同一个表所需的多个关系?modelH1modelH2modelH3
  • 当我对ModelE实例进行迭代时,对 to 的引用会ModelA在 sqlAlchemy 中触发一个新查询,而在 Django ORM 中它会自动填充。我有什么遗漏的吗?

python sqlalchemy django-models

5
推荐指数
0
解决办法
1625
查看次数