Django Rest Framework извлекает вложенный JSONField с фильтрами
Я работаю над проектом с использованием Python(3.7), Django(1.11) и DRF(3.6), в котором мне нужно получить данные, отфильтрованные с помощью JSONField, из вложенного объекта.
Примечание: я много искал и нашел несколько относительных вопросов, но мой вопрос немного другой, так что не помечайте его как дубликат, пожалуйста!
Вот что я пробовал до сих пор:
От models.py
:
class MyModel(models.Model):
id = models.CharField(primary_key=True, max_length=255)
type = models.CharField(max_length=255)
actor = JSONField()
repo = JSONField()
created_at = models.DateTimeField()
От serializers.py
:
class MyModelSerializer(serializers.ModelSerializer):
obj1 = serializers.JSONField()
obj2 = serializers.JSONField()
class Meta:
model = MyModel
fields = "__all__"
От urls.py
:
url(r'^mymodel/obj1s/(?P<pk>[0-9]+)/$', views.ActorEvents.as_view(), name='get-actor')
** От views.py
:
class Obj1Obj2(generics.RetrieveAPIView):
serializer_class = MyModelSerializer
def get_object(self):
queryset = EventModel.objects.filter(actor__id=self.request.parser_context['kwargs']['id'])
obj = get_object_or_404(queryset)
return obj
и вот входной объект JSON:
{
"id":4055191679,
"type":"PushEvent",
"obj1":{
"id":2790311,
"login":"daniel33",
"avatar_url":"a_url"
},
"obj2":{
"id":352806,
"name":"NAME",
"url":"a_url"
},
"created_at":"2015-10-03 06:13:31"
}
и чего я хочу достичь: он должен вернуть MyModel
записи по obj1 ID
и должен быть в состоянии вернуть массив JSON всех MyModel objects
где obj1 ID
по запросу GET на /mymodel/obj1s/<ID>
, Если запрошенный obj1
не существует, тогда код ответа HTTP должен быть 404, в противном случае код ответа должен быть 200. Массив JSON должен быть отсортирован в порядке возрастания MyModel
Я БЫ.
Ошибка обновления: вот ошибка, которую я получил:
django.core.exceptions.FieldError: Неподдерживаемый поиск 'id' для JSONField или присоединение к полю недопустимо. [18/Feb/2019 10:37:39] "GET /events/ актеры /2790311/ HTTP/1.1" 500 16210