2015-12-15 3 views
3

У меня есть следующие два класса в моих app.models и я с помощью API-интерфейсы трясогузки, чтобы получить данные в виде JSONКак получить доступ к данным ForeignKey без дополнительных запросов в трясогузке (Джанго)

class AuthorMeta(Page): 
    author=models.OneToOneField(User) 
    city = models.ForeignKey('Cities', related_name='related_author') 

class Cities(Page): 
    name = models.CharField(max_length=30) 

Так что, когда стараюсь /api/v1/pages/?type=dashboard.AuthorMeta&fields=title,city, она возвращает следующие данные:

{ 
    "meta": { 
     "total_count": 1 
    }, 
    "pages": [ 
     { 
      "id": 11, 
      "meta": { 
       "type": "dashboard.AuthorMeta", 
       "detail_url": "http://localhost:8000/api/v1/pages/11/" 
      }, 
      "title": "Suneet Choudhary", 
      "city": { 
       "id": 10, 
       "meta": { 
        "type": "dashboard.Cities", 
        "detail_url": "http://localhost:8000/api/v1/pages/10/" 
       } 
      } 
     } 
    ] 
} 

В поле города, он возвращает id и meta города. Как я могу получить название города в ответе здесь, не делая дополнительный запрос? :/

Не удалось найти решение проблемы с Documentation. Я что-то упускаю?

ответ

3

Использование Django модели свойство возвращаться через ForeignKey:

class AuthorMeta(Page): 
    author=models.OneToOneField(User) 
    city = models.ForeignKey('Cities', related_name='related_author') 
    city_name = property(get_city_name) 

    def get_city_name(self): 
     return self.city.name 

Проверьте Term Property, чтобы лучше понять концепцию

+0

Это работает очень хорошо, но как насчет многих однозначных отношений. [Нравится] (http://stackoverflow.com/questions/36498417/how-to-access-manytooneforeignkey-data-without-making-extra-queries-in-wagtaild) – suneet