首页 > 解决方案 > 检查postgres数组django上是否存在

问题描述

我有像东西南北这样的区域,并且我在所有 4 个区域中添加了状态。每个状态都存储在数组类型中,如下所示:{cd26ddeb-04cb-4d9a-8c7f-51d5d389f475,bc44618d-3a21-475b-8d74-c0542abb173b, 18695611-256e-4506-a087-596f8914551d} 我想做的是每当我有任何新状态时,它应该检查所有区域(如果存在)然后什么也不做,否则添加这个。问题是我正在传递需要与以前添加的状态一起添加的新状态。然后我正在检查所有区域状态(如果不存在)然后将其添加到 new_state 列表并传递给数据,但这部分不起作用:

if state not in all_state:
   #its not filtering states returning all
    new_state.append(state)


@api_view(['POST'])
@login_required_message
def zoneEdit(request):
    data = decode_data(request.data.copy())
    new_state = []
    try:
        try:
            zone_queryset = Zone.objects.get(uid=data['uid'])

            all_state = Zone.objects.values_list('state',flat=True)
            print(all_state, "all_state")
            data["created_by"] = request.user.uid
            for state in data['state']:  
                if state not in all_state:
       #its not filtering states returning all
                    new_state.append(state)
            print(new_state, "to be added")                
            zone_serializer_obj = ZoneSerializer(zone_queryset, data=new_state)
            if zone_serializer_obj.is_valid():
                try:
                    city_save = zone_serializer_obj.save()
                    return CustomeResponse(request=request, comment=ZONE_NAME_UPDATE, data=json.dumps(zone_serializer_obj.data, cls=UUIDEncoder), status=status.HTTP_200_OK, message=ZONE_NAME_UPDATE)
                except Exception as e:
                    return CustomeResponse(request=request, log_data=json.dumps(str(e), cls=UUIDEncoder), message=SOMETHING_WENT_WRONG+" mv54 "+str(e), data=json.dumps({}, cls=UUIDEncoder), status=status.HTTP_400_BAD_REQUEST, validate_errors=1)
            else:
                return CustomeResponse(request=request, comment=FIELDS_NOT_VALID, data=json.dumps(zone_serializer_obj.errors, cls=UUIDEncoder), status=status.HTTP_400_BAD_REQUEST, validate_errors=1)
        else:
            return CustomeResponse(request=request, comment=FIELDS_NOT_VALID, data=json.dumps({}, cls=UUIDEncoder), status=status.HTTP_400_BAD_REQUEST, validate_errors=1)
    except City.DoesNotExist:
        return CustomeResponse(request=request, comment=ZONE_NAME_NOT_FOUND, message=ZONE_NAME_NOT_FOUND, data=json.dumps({}, cls=UUIDEncoder), status=status.HTTP_400_BAD_REQUEST, validate_errors=1)
except Exception as e:
    error_str = KEY_MISSING if type(e) is KeyError else UID_IS_NOT_VALID
    return CustomeResponse(request=request, log_data=json.dumps(str(e), cla=UUIDEncoder), comment=error_str,  message=error_str, data=json.dumps({}, cls=UUIDEncoder),  status=status.HTTP_400_BAD_REQUEST, validate_errors=1)

我可以将多个状态与同一区域上的先前现有状态一起传递到数组中。如果有更好的方法来检查所有区域状态是否存在哪个状态,请建议

标签: python-3.xdjangodjango-rest-framework

解决方案


推荐阅读