Я использую Django Rest Framework для создания простого API. У меня есть две модели с отношением внешнего ключа:
class Article(models.Model):
publisher = models.ForeignKey('Publisher', ...)
class Publisher(models.Model):
name = ...
Я сериализую их, используя идентификаторы гиперссылок:
{
"url": "http://localhost:8000/api/1/article/1",
"publisher": {
"url": "http://localhost:8000/api/1/publisher/1",
"name": "Publisher One"
},
...
}
Я хотел бы отфильтровать все статьи по отношению к издателю спецификации. c статья, в идеале что-то вроде этого:
http://localhost:8000/api/1/article?publisher=http://localhost:8000/api/1/publisher/1
Я попытался создать пользовательский FilterClass
, однако url
не является действительным полем в модели, поэтому я не уверен, как сослаться на него.
Если я извлечу id
из URL-адреса и передам, что он работает, как и ожидалось, но я бы предпочел, чтобы клиенту не нужно было знать, как анализировать гиперссылочный идентификатор для «реального» идентификатор.
Я также могу добавить id
к сериализатору, но если это решение, то какой смысл в HyperlinkedModelSerializer
?