在显示过滤结果时,我面临一个极其奇怪的问题。
这是我的api方法:
...
@list_route(methods=['GET'], url_path='internal-users')
def internal(self, request, *args, **kwargs):
users = models.User.objects.internal_users()
data = self.get_serializer(users, many=True, context={'request': request}).data
return response.Ok(data)
...
这是用户模型的internal_users()
调用:
...
def internal_users(self) -> Union[QuerySet, List['User']]:
queryset = super(UserManager, self).get_queryset()
queryset = queryset.filter(role_policy__gte=constants.UserRolePolicy.editor) # role_polict >= 63
return queryset
...
到目前为止,控件->
显示正确的查询形式和结果。
...
@list_route(methods=['GET'], url_path='internal-users')
def internal(self, request, *args, **kwargs):
users = models.User.objects.internal_users()
# -> correct results
data = self.get_serializer(users, many=True, context={'request': request}).data
return response.Ok(data)
...
但是,一旦我将对象传递给下一行的序列化程序,结果就会自动减少到只有role_policy EQUAL TO 63的那些用户。
这是序列化器:
class UserListSerializer(serializers.ModelSerializer):
class Meta:
model = models.User
fields = [
'id',
'uuid',
'email',
'given',
...
'phone',
]
可能是什么问题?请帮忙。
答案 0 :(得分:0)
我的坏。 using K = CGAL::Exact_predicates_inexact_constructions_kernel;
using Vb = CGAL::Triangulation_vertex_base_with_id_2<K>;
using Fb = CGAL::Delaunay_mesh_face_base_2<K>;
using Tds = CGAL::Triangulation_data_structure_2<Vb, Fb>;
using CDT_Tag = CGAL::Exact_intersections_tag;
using CDT = CGAL::Constrained_Delaunay_triangulation_2<K, Tds, CDT_Tag>;
using Criteria = CGAL::Delaunay_mesh_size_criteria_2<CDT>;
CDT cdt;
CGAL::Delaunay_mesher_2<CDT, Criteria> mesher(cdt, Criteria(0.125, 0.5));
... // Add some points and constraints.
static const CDT::Point INFINITE_POINT = { 1e100, 1e100 };
std::vector<CDT::Point> seeds = { INFINITE_POINT };
mesher.set_seeds(seeds.begin(), seeds.end());
mesher.refine_mesh();
for (auto vertices_iter = cdt.finite_vertices_begin();
vertices_iter != cdt.finite_vertices_end();
++vertices_iter) {
// do something with vertices_iter->id().
}
是文本字段,而不是整数字段。这就是role policy
无法正常工作的原因。
尽管查询的格式很完美,但是它与Django颇有误导性。