我有模特
class Event(models.Model):
main_image = models.ImageField(upload_to='events/images',default="")
event_name = models.CharField(max_length=100,default="")
is_active = models.BooleanField(default=True)
is_approved = models.BooleanField(default=True)
created_at = models.DateTimeField(default=timezone.now)
created_by = models.ForeignKey(User,on_delete=models.CASCADE,blank=True)
def __str__(self):
return self.event_name
另一个是
class Favourite(models.Model):
event = models.ForeignKey(
Event,limit_choices_to={'is_active': True},related_name="fav_data",related_query_name="fav_data")
user_token = models.TextField(blank=True)
is_fav = models.BooleanField(default=True)
这是一个序列化程序类
class FavSerializer(serializers.ModelSerializer):
class Meta:
model = Favourite
fields = ['id','event','user_token','is_fav']
其他是
class eventSerializer(serializers.ModelSerializer):
additional_images = additionalImagesSerializer(many=True,read_only=True)
fav_data = FavSerializer(many=True,read_only=True)
class Meta:
model = Event
fields = ['id','main_image','event_name','additional_images','fav_data']
我的查看方法是
class eventList(ListAPIView):
serializer_class = eventSerializer
filter_backends = [DjangoFilterBackend,filters.SearchFilter,filters.OrderingFilter]
search_fields = ['event_name']
filterset_fields = ['event_name']
ordering_fields = '__all__'
ordering = ['-id']
def get_queryset(self):
token = self.kwargs['token']
return Event.objects.all().filter(is_active=1,is_approved=1)
这给出结果
{
"count": 12,"next": "http://192.168.0.104:8000/event/allEvents/token1/?limit=10&offset=10","previous": null,"results": [
{
"id": 16,"main_image": "http://192.168.0.104:8000/media/events/images/1569666693-6th-pakistan-mega-leather-show.jpg","event_name": "6th Pakistan Mega leather show","event_tag": [
5,6,7
],"additional_images": [],"fav_data": [
{
"id": 6,"event": 16,"user_token": "token1","is_fav": true
},{
"id": 7,"user_token": "token2",{
"id": 8,"user_token": "token3",{
"id": 9,"user_token": "token4","is_fav": true
}
]
},{
"id": 15,"main_image": "http://192.168.0.104:8000/media/events/images/1573803406-tsx-02.jpeg","event_name": "The Stock Exchange","event_tag": [
8
],"fav_data": [
{
"id": 10,"event": 15,{
"id": 11,]
}
问题是它给出结果中的所有fav_data
对象,而我只想要fav_data
中给出了user_token
的那些url
。如果在该user_token
中存在event
,则仅显示相关的fav_data
对象,否则显示空的fav_data
。
以及令牌如何发送到序列化器方法并调整查询
我想要这样的结果
{
"count": 12,]
},{
"id": 14,"fav_data": []
},]
}