晚上好
我对Django相对了解,但是我不理解如何为外键引用的其他字段获取值。
例如,我有一个模型:
class Status(models.Model):
status_text = models.CharField(max_length=20)
status_open = models.BooleanField(default=1)
def __str__(self):
return self.status_text
class Target(models.Model):
last_name = models.CharField(max_length=40)
first_name = models.CharField(max_length=40)
status = models.ForeignKey(Status, on_delete=models.CASCADE)
我要查询它:
queryset = Target.objects.filter(status__status_open=1)
执行此操作时,我将返回状态字段的pk(1、2、3等)。我真正想要的是与该pk相对应的status_text。
我一直在与select相关,但只声明status_text不是FK。
基本上,我如何模拟这样的查询:
SELECT Target.last_name, Target.first_name, Status.status_text
FROM Target, Status
WHERE Target.status = Status.ID AND Status.status_open = 1;
感谢您的帮助。在使用Django的过程中,我继续与ORM斗争...
编辑:添加序列化器和views.py
class TargetSerializer(serializers.ModelSerializer):
status_text = serializers.ReadOnlyField()
class Meta:
model = Target
fields = ('last_name', 'first_name', 'status_text')
Views.py
class TargetList(generics.ListAPIView):
queryset = Target.objects.filter(sir_status__status_open=1).values( 'last_name', 'first_name', 'sir_status__status_text')
serializer_class = TargetSerializer
我的API调用返回的数据没有错误,但不是status_text。
状态表中的数据只是一个pk ID(1,2,3)和一个字符串(“打开”,“关闭”)
感谢您的帮助。
答案 0 :(得分:0)
使用values()
方法
Target.objects.filter(status__status_open=1).values('last_name', 'first_name', 'status__status_text')