Добрый вечер,
Я относительно знаком с 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 и т. д.) для поля состояния,Что я действительно хочу, так это status_text, который соответствует этому pk.
Я играл с select related, но он просто заявляет, что 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;
Спасибо за вашу помощь.Я продолжаю бороться с ORM при использовании Django ...
РЕДАКТИРОВАТЬ: Добавление Serializer & 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) и строка ('Open', 'Closed')
Спасибо за вашу помощь.