Как включить данные из объекта внешнего ключа в запрос Django ORM? - PullRequest
0 голосов
/ 05 марта 2019

Я пытаюсь запросить объект в моей БД и получить данные от другого объекта, который имеет отношение внешнего ключа.

Например, если у меня есть эти модели:

class Book(models.Model):
   language = models.ForeignKey('Language')
   ...

class Language(models.Model):
   name = models.CharField(max_length=255, unique=True)

Я хочу запросить эти модели и получить QuerySet книг, а затем вернуть книги через API.

В сыром SQL я бы сделал что-то похожее на:

SELECT book, language.name
FROM book
JOIN ....

Есть ли способ сделать это с помощью Django ORM?

1 Ответ

0 голосов
/ 05 марта 2019

Если вы используете django rest framework для API, это можно сделать с помощью поля Метод сериализатора

class BookSerializer(serializers.ModelSerializer):
    language = serializers.SerializerMethodField()
    class Meta:
        model = Book
        fields = ['id', 'language']
    def get_language(self,obj)
       return obj.language.name

Еще один способ сделать это - добавить поле свойства в модель книги

   @property
   def language(self):
       return self.language.name

Теперь, если вы делаете book_obj.language, вы можете получить имя в языковой модели

...