Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django queryset选择相关的。value()重命名键_Python_Django_Orm_Django Queryset - Fatal编程技术网

Python django queryset选择相关的。value()重命名键

Python django queryset选择相关的。value()重命名键,python,django,orm,django-queryset,Python,Django,Orm,Django Queryset,使用python3.4 django 2.0.2 models.py class Userinfo(models.Model): useruid = models.BigAutoField(db_column='UserUID', primary_key=True) useremail = models.CharField( db_column='UserEmail', unique=True, max_length=100) userpass

使用python3.4 django 2.0.2

models.py

class Userinfo(models.Model):

    useruid = models.BigAutoField(db_column='UserUID', primary_key=True)

    useremail = models.CharField(
            db_column='UserEmail', unique=True, max_length=100)
    userpassword = models.CharField(db_column='UserPassword', max_length=128)

    passwordsalt = models.CharField(db_column='PasswordSalt', max_length=128)
    userstatus = models.IntegerField(db_column='UserStatus', default=0)
    username = models.CharField(
        db_column='UserName', max_length=100, default=0)
    class Meta:
        managed = False
        db_table = 'userinfo'

class Postinfo(models.model):
    postuid = models.BigAutoField(db_column='PostUID', primary_key=True)
    content = content = models.TextField(db_column='Content')
    useruid = models.ForeignKey(
    Userinfo, db_column='UserUID', on_delete=models.CASCADE)

    class Meta:
         managed = False
         db_table = 'postinfo'
queryset

postquery = models.Postinfo.objects.all().select_related("useruid").order_by(
                '-postuid')
postquery是

<QuerySet [{'content': 'test','postuid': 1, 'useruid_id': 1},OtherPosts...>
userinfoquery是

 <QuerySet [{'useruid_id__username': 'firstuser','useruid_id__userstatus': 0, 'useruid_id': 1},OtherUsers...>
此代码引发异常

QuerySet.annotate() received non-expression(s): useruid_id, useruid_id__uesrname, useruid_id__userstatus.

如何删除Django 1.11以来的useruid\u id\u

您可以将表达式与
值一起使用()
,请检查。因此,您需要在查询中添加
F
表达式:

from django.db.models import F
userinfoquery = postquery.values(
                useruid=F("useruid_id"), username=F("useruid_id__username"), userstatus=F("useruid_id__userstatus"))

您好,您可以使用注释功能

from django.db.models import F

Postinfo.objects.annotate(renamed_value=F('useruid_id__username')).values('renamed_value')

引发此异常
注释“useruid”与模型上的字段冲突用户UID不在postquery.values()中
from django.db.models import F
userinfoquery = postquery.values(
                useruid=F("useruid_id"), username=F("useruid_id__username"), userstatus=F("useruid_id__userstatus"))
from django.db.models import F

Postinfo.objects.annotate(renamed_value=F('useruid_id__username')).values('renamed_value')