python - 如何停止在 django_restframework 中获取重复数据?
问题描述
我正在尝试通过过滤用户和模式获取所有数据我能够过滤所有数据但我也得到重复数据所以如何停止在 django rest-framework 中获取重复数据。
这是json 文件。
{
"count": 4,
"next": null,
"previous": null,
"results": [
{
"too": "2019-09-28",
"fromm": "2019-09-28",
"user": 1,
"total_milage": 20,
"total_movingtime": 20.0,
"total_averagespeed": 10.0,
"total_kg": 20,
"total_co2_save": 20,
"total_boxes": 20,
"total_user": 20,
"total_letter": 20,
"total_ship_weight": 20,
"total_pack": 20
},
{
"too": "2019-09-28",
"fromm": "2019-09-28",
"user": 2,
"total_milage": 12,
"total_movingtime": 10.0,
"total_averagespeed": 10.0,
"total_kg": 12,
"total_co2_save": 10,
"total_boxes": 10,
"total_user": 10,
"total_letter": 12,
"total_ship_weight": 10,
"total_pack": 10
},
{
"too": "2019-09-28",
"fromm": "2019-09-28",
"user": 1,
"total_milage": 20,
"total_movingtime": 20.0,
"total_averagespeed": 10.0,
"total_kg": 20,
"total_co2_save": 20,
"total_boxes": 20,
"total_user": 20,
"total_letter": 20,
"total_ship_weight": 20,
"total_pack": 20
},
这是views.py
class ReportView(generics.ListCreateAPIView):
queryset = Delivery.objects.all().distinct()
serializer_class = serializers.ReportSerializer
# pagination_class = CustomPagination
filter_backends = [DjangoFilterBackend]
filterset_class = ReportFilter
这是serilizers.py
class ReportSerializer(serializers.ModelSerializer):
total_milage = serializers.SerializerMethodField()
total_movingtime = serializers.SerializerMethodField()
total_averagespeed = serializers.SerializerMethodField()
total_kg = serializers.SerializerMethodField()
total_co2_save = serializers.SerializerMethodField()
total_boxes = serializers.SerializerMethodField()
total_user = serializers.SerializerMethodField()
total_letter = serializers.SerializerMethodField()
total_ship_weight = serializers.SerializerMethodField()
total_pack = serializers.SerializerMethodField()
# user = serializers.SerializerMethodField()
class Meta:
model = User
fields = ['too', 'fromm','user', 'total_milage', 'total_movingtime', 'total_averagespeed', 'total_kg', 'total_co2_save',
'total_boxes', 'total_user', 'total_letter', 'total_ship_weight', 'total_pack', 'too', 'fromm']
# def get_mode(self, obj):
# totalpiece = Delivery.objects.filter(mode__exact="bike")
# def get_user(self, obj):
# return obj.user.username
def get_total_letter(self, obj):
totalpieces = Delivery.objects.filter(user_id=obj.user,mode=obj.mode).aggregate(
total_letter=Sum('letteritems'))
return totalpieces["total_letter"]
def get_total_ship_weight(self, obj):
totalpieces = Delivery.objects.filter(user_id=obj.user.id,mode=obj.mode).aggregate(
total_ship_weight=Sum('shipweight'))
return totalpieces["total_ship_weight"]
// and so on.........
并且我试图按特定用户和特定模式过滤数据,但我得到重复数据,所以如何停止获取重复数据
解决方案
尝试使用Delivery.objects.all().distinct('id')
推荐阅读
- ssl - 需要使用开放 SSL 创建证书
- javascript - 修复 CSS 悬停时的按钮样式?
- sql - 在其中一列中将英亩转换为平方英尺
- elasticsearch - 严格使用 ElasticSearch 映射
- python - 如何在 Lynx 等 webbrowser 或 python webbrowser 上添加 xmpp 或矩阵协议?
- html - 如何从 ExpressJS 路由保存呈现的 html 视图文件
- php - 在布尔值中调用成员函数 fetch() 时出错
- tomcat - javax.management.AttributeNotFoundException 8.5.35 及以上
- ios - iMessage 应用程序处于折叠状态时按钮不起作用
- mysql - 如何每天对 mySQL 中的数据进行分组?