小编RA1*_*123的帖子

在Django中使用select_related选择特定字段

我使用外键有两个模型文章和博客相关.我想在提取文章时只选择博客名称.

articles = Articles.objects.all().select_related('blog__name')
Run Code Online (Sandbox Code Playgroud)

生成的查询显示它选择了Blog模型中的所有字段.我尝试使用select()和defer()与select_related,但两个都没有用.

articles = Articles.objects.all().select_related('blog__name').only('blog__name', 'title', 'create_time')
Run Code Online (Sandbox Code Playgroud)

上述查询导致错误:select_related中给出的字段名称无效:选项为:blog

如何生成查询以便仅选择文章字段和博客名称?

django django-queryset django-select-related python-2.7 django-1.8

21
推荐指数
2
解决办法
9576
查看次数

在django 1.8中,如何设置自定义用户模型时为post_migrate和post_syncdb信号接收器设置发送方?

以下是我在放置在定义了auth模型的包中的signals.py文件中的代码.

@receiver(post_migrate, sender=settings.AUTH_USER_MODEL)
def define_groups(sender, **kwargs):
    # Create groups
    Group.objects.get_or_create(name='Promoter')
    Group.objects.get_or_create(name='Client')
    Group.objects.get_or_create(name='Superuser')
    Group.objects.get_or_create(name='Staff')
Run Code Online (Sandbox Code Playgroud)

文档(https://docs.djangoproject.com/en/1.8/topics/auth/customizing/#referencing-the-user-model)声明它应该设置为

sender=settings.AUTH_USER_MODEL
Run Code Online (Sandbox Code Playgroud)

虽然这只适用于文档示例中提到的post_save.

我已经尝试过get_user_model()并直接使用my_custom_user.models.

get_user_model()返回错误,而将模型设置为发件人的工作正常,如 -

from . import models

@receiver(post_syncdb, sender=models)
def define_groups(sender, **kwargs):
    # Create groups
    Group.objects.get_or_create(name='Promoter')
    Group.objects.get_or_create(name='Client')
    Group.objects.get_or_create(name='Superuser')
    Group.objects.get_or_create(name='Staff')
Run Code Online (Sandbox Code Playgroud)

但根据文档,这不是引用自定义用户模型的正确方法,只是一个丑陋的解决方法.

有人请帮助我解决方案,以便我可以添加这些组与用户模型的第一次迁移.

谢谢

编辑:使用get_user_model()返回以下错误 -

django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet.
Run Code Online (Sandbox Code Playgroud)

python django django-signals django-models django-1.8

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