问题描述
我已经尝试了所有我所知道的并搜索了所有没有找到任何解决方案的地方:
class UsersAnsweRSSerializer(serializers.ModelSerializer):
Answers = serializers.SerializerMethodField('get_answers')
def get_answers(self,obj):
queryset = AnswersModel.objects.filter(Question=obj.Answer.Question.id)\
.annotate(answersCount=Count('UsersAnswer',distinct=True))
serializer = AnsweRSSerializer(instance=queryset,many=True)
return serializer.data
class Meta:
model = UsersAnswerModel
fields = ['Answer','APNSDevice','RegistrationID','Answers']
这是我的模型:
class AnswersModel(models.Model):
Question = models.ForeignKey(QuestionsModel,related_name='QuestionAnswer',on_delete=models.CASCADE)
Answer = models.CharField(max_length=200)
class UsersAnswerModel(models.Model):
Answer = models.ForeignKey(AnswersModel,related_name='UsersAnswer',on_delete=models.CASCADE)
RegistrationID = models.CharField(max_length=200)
APNSDevice = models.CharField(max_length=200,default='no name')
class QuestionsModel(models.Model):
created = models.DateTimeField(auto_Now_add=True)
Question = models.CharField(max_length=200)
得到的是什么
{
"Answer": 12,"APNSDevice": "byname","RegistrationID": "asdasdasdasdasdasdasdasdsa","Answers": [
{
"id": 10,"Question": 4,"Answer": "Answer 1","UsersAnswer": [
"gfgdgdfgdf","c748dfd8aa7dd73a6c1ef17676aa7667161ff7e0f8e2ef21ef17e964a26150e4"
]
},{
"id": 11,"Answer": "Answer 2","UsersAnswer": [
"sfgdfgdf","c748dfd8aa7dd73a6c1ef17676aa7667161ff7e0f8e2ef21ef17e964a26150e4","c748dfd8aa7dd73a6c1ef17676aa7667161ff7e0f8e2ef21ef17e964a26150e4"
]
}
解决方法
我认为你想要做的是聚合和计数。
用聚合替换注解