Я применил объединение к двум таблицам со следующим запросом,
VIEWS.PY
class performance(viewsets.ModelViewSet):
queryset = Leads.objects.select_related('channelId'
).values("channelId__channelName").annotate(tcount=Count('channelId'))
serializer_class = teamwise_lead_performance_serializer
, но я не могу перехватить ответ с помощью этого сериализатора,
SERIALIZER.PY
class channel_serializer(serializers.ModelSerializer):
class Meta:
model = Channels
fields = ['channelName']
class performance_serializer(serializers.ModelSerializer):
tcount = serializers.IntegerField()
channel = channel_serializer(many=True, read_only=True)
class Meta:
model = Leads
fields = ['tcount', 'channel']
фактические результаты:
[
{
"tcount": 88
},
{
"tcount": 25
},
{
"tcount": 31
},
...
]
ожидаемые результаты:
[
{
"channelName": "abc",
"tcount": 88
},
{
"channelName": "def",
"tcount": 25
},
{
"channelName": "ghi",
"tcount": 31
},
...
]
я пробовалследующее:
Как объединить две модели в django-rest-framework
Models.py
class Channels(models.Model):
id = models.IntegerField(primary_key=True)
channelName = models.CharField(max_length=20, default=None)
class Meta:
db_table = "table1"
class Leads(models.Model):
id = models.IntegerField(primary_key=True)
channelId = models.ForeignKey(Channels, on_delete=models.CASCADE, db_column='channelId')
class Meta:
db_table = "table2"
почему он не получает channelName
в ответ? что я тут не так делаю? Спасибо за ваши предложения
Редактировать
Когда я пытаюсь ответить на вопрос Мерена, я получаю следующую ошибку:
KeyError при попытке получить значение для поля channelName on serializer performance_serializer . Поле сериализатора может иметь неправильное имя и не соответствовать ни одному атрибуту или ключу в экземпляре dict. Первоначальный текст исключения был: 'channelId'.