我使用外键有两个模型文章和博客相关.我想在提取文章时只选择博客名称.
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
以下是我在放置在定义了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)