小编ant*_*koo的帖子

具有多对多和直通表的 Graphene-django

我的应用程序与直通模型有几个多对多关系如下所示:

class Person(models.Model):
    name = models.CharField()

class Group(models.Model):
    name = models.CharField()
    members = models.ManyToManyField(Person, through='Membership')

class Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()  # Extra info on the relationship
Run Code Online (Sandbox Code Playgroud)

在 graphql 中表示这些数据而没有成员资格的中间类型(选项 A)似乎很直观:

{
  "data": {
    "persons": [
      {
        "id": "1",
        "name": "Jack",
        "groups": [
          {
            "id": 3,                     # From Group-model
            "name": "Students",          # From Group-model
            "date_joined": "2019-01-01"  # From Membership-model
          },
          ...
        ]
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

对比选项 B:

{
  "data": { …
Run Code Online (Sandbox Code Playgroud)

django graphql graphene-python

8
推荐指数
1
解决办法
1128
查看次数

处理Django blocktrans标记中的百分号(%)

我目前正在本地化我的Django应用程序.所有其他翻译工作正常,除了blocktrans标签内的百分号.

在我的模板中,我有{% blocktrans %}Original % blocktrans{endblocktrans %}.

django-admin makemessages 在django.po中生成这个:

#: templates/index.html:78
#, python-format
msgid "Original %% blocktrans"
msgstr ""
Run Code Online (Sandbox Code Playgroud)

我更新msgstr "Translated %% blocktrans",运行django-admin compilemessages,重新启动开发服务器并刷新页面,但我仍然Original % blocktrans在输出中看到.其他翻译正确显示.

作为参考,{% trans "Original % trans" %}也可以.在makemessages和翻译之后,我有:

#: templates/index.html:72
msgid "Original % trans"
msgstr "Translated % trans"
Run Code Online (Sandbox Code Playgroud)

这按预期工作 - 显示翻译版本.

我必须使用blocktrans,因为我还需要将变量嵌入到字符串中.我正在使用Django 1.2.5.

如何使用百分号使块运行工作?

django localization escaping

6
推荐指数
1
解决办法
3661
查看次数

具有自定义保存/恢复逻辑的 Django Rest 框架字段

如何使用自定义保存/恢复逻辑创建 Django Rest 框架读写字段?我正在使用 DRF 3.5.4 和 Django 1.8。

像这样的东西:

class UserSerializer(serializer.Serializer):
    # username is a field in the backing model, no problemo
    username = serializers.CharField()

    # type is not an actual model field, but reflects whether the user has 
    # Django permission "foo" set. I.e. "normal" = no permission, "silly" = 
    # permission is set.
    type = serializers.ChoiceField(["normal", "silly"])
Run Code Online (Sandbox Code Playgroud)

换句话说:创建用户时,如果type == "silly",则为他设置权限“foo”,如果类型为“正常”则不设置。并且在检索用户时,type == "silly"如果用户设置了权限“foo”,如果没有则设置“正常”。

不允许/不需要用户更新,但我也有兴趣知道如何将其应用于更新。

django-rest-framework

3
推荐指数
1
解决办法
2641
查看次数

Django 1.4.18 dev服务器在VirtualBox下响应缓慢

我们在Windows 7主机中的虚拟机Ubuntu LTS 12.04 guest中运行我们的开发环境.我们在开发期间使用./manage.py runserver.

最近我们将Django版本升级到最新版本(1.4.19)但注意到一个非常奇怪的行为:来自主机的请求从5到30秒服务,而来自VM内部的请求在不到一秒的时间内提供,因为它们应该是.这个问题已经在Django 1.4.18(https://docs.djangoproject.com/fr/1.7/releases/1.4.18/)中引入,所有旧版本都可以快速运行.

在来宾或主机中使用不同的浏览器没有任何区别.请求的资源是动态的还是静态的(我们使用静态应用程序在开发期间提供静态内容)也没有任何区别.

什么可能导致这种行为?从发行说明来看,我们并不是很清楚.

python django virtualbox

2
推荐指数
1
解决办法
796
查看次数