#json #django #python-3.x #django-rest-framework #django-views
#json #django #python-3.x #django-rest-framework #django-просмотры
Вопрос:
Это мой views.py файл
class NewsChannelListView(ObjectMultipleModelAPIView):
def get_querylist(self, *args, **kwargs):
userId = self.request.user.id
queryset = [
{'queryset': News_Channel.objects.all(),
'serializer_class': NewsChannelSerializers},
{'queryset': Count.objects.filter(userId=userId),
'serializer_class': CountSerializers},
]
return queryset
Я получаю следующий ответ от моих представлений this
{
"News_Channel": [
{
"id": 2,
"name": "Republic",
"info": "Arnab Goswami News channel",
"image": "https://fourthpillar-static.s3.amazonaws.com/media/repiblic_1bRFWNZ.png",
"website": "https://www.repu",
"total_star": 10,
"total_user": 2
},
{
"id": 1,
"name": "NDTV",
"info": "India News Media",
"image": "https://fourthpillar-static.s3.amazonaws.com/media/ndtv_WH67OhA.png",
"website": "https://ndtv.com",
"total_star": 18,
"total_user": 2
}
],
"Count": [
{
"userId": 1,
"channelId": 2,
"rate": 6
},
{
"userId": 1,
"channelId": 1,
"rate": 8
}
]
}
Есть ли какой-либо способ получить один объект.Идентификатор канала 2 в графе сливается с идентификатором 2 в новостном канале, а идентификатор канала 1 в графе сливается с идентификатором 1 в новостном канале. Итак, окончательный ответ должен быть таким
{
"News_Channel": [
{
"id": 2,
"name": "Republic",
"info": "Arnab Goswami News channel",
"image": "https://fourthpillar-static.s3.amazonaws.com/media/repiblic_1bRFWNZ.png",
"website": "https://www.repu",
"total_star": 10,
"total_user": 2,
"userId": 1,
"rate": 6
},
{
"id": 1,
"name": "NDTV",
"info": "India News Media",
"image": "https://fourthpillar-static.s3.amazonaws.com/media/ndtv_WH67OhA.png",
"website": "https://ndtv.com",
"total_star": 18,
"total_user": 2,
"userId": 1,
"rate": 8
}
],
}
Код модели
class News_Channel(models.Model):
name = models.TextField(blank=False)
info = models.TextField(blank=False)
image = models.FileField()
website = models.TextField()
total_star = models.PositiveIntegerField(default=0)
total_user = models.IntegerField()
class Meta:
ordering = ["-id"]
def __str__(self):
return self.name
class Count(models.Model):
userId = models.ForeignKey(User, on_delete=models.CASCADE)
channelId = models.ForeignKey(News_Channel, on_delete=models.CASCADE)
rate = models.PositiveIntegerField(default=0)
class Meta:
ordering = ["-id"]
Я использую django 2.1.7 и djangorestframework ==3.9.2.
Комментарии:
1. В этом случае вы должны были использовать обычное представление DRF…. Я думаю
2. кроме того, вы могли бы переопределить
format_results()
метод класса view3. Не могли бы вы поделиться некоторыми материалами, связанными с этим, или можете изменить представление в ответе.
4. Возможно, вы сможете использовать
annotate()
вызов, а затемSerializerMethodField
показать его вNewsChannelSerializer
классе. Если вы опубликуете свои модели, я могу помочь с этим.5. @schillingt готово. Пожалуйста, проверьте модель сейчас в вопросе. Спасибо за ваш ответ