jtimmins
jtimmins

Reputation: 367

How to include data from foreign key object in Django ORM query?

I'm trying to query for an object in my DB, and get data from another object that shares a Foreign Key relationship.

For example, if I have these models:

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

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

I want to query these models and get a QuerySet of books, then return the books via an API.

In raw SQL I would do something akin to:

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

Is there any way to accomplish this with the Django ORM?

Upvotes: 0

Views: 756

Answers (1)

Mohit Harshan
Mohit Harshan

Reputation: 1986

If you are using django rest framework for the API, You can do this by using serializer Method field

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

Another way to do this is adding a property field to Book Model

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

Now if you do book_obj.language ,You can get the name in language model

Upvotes: 2

Related Questions