有一个派工,需要拍给工程师,Post_Code 为1,需要前端调用一个GET 请求Post_Code 为1
后端post和 user是many to many 关系, USER 后端API接口:
class Filters(FuFilters):
name: str = Field(None, alias="name")
mobile: str = Field(None, alias="mobile")
status: bool = Field(None, alias="status")
dept_id__in: list = Field(None, alias="dept_ids[]")
dept_name__in: list = Field(None, alias="dept_names[]")
post__in: list = Field(None, alias="post_code[:]")
为排查错误:
print("Parsed filters:", filters) 检查输入参数
@router.get("/user", response=List[UserSchemaOut])
def list_user(request, filters: Filters = Query(...)):
print("Parsed filters:", filters)
qs = retrieve(request, Users, filters)
users = []
for user in qs:
post_names = list(user.post.values_list('name', flat=True))
post_ids = list(map(int, user.post.values_list('id', flat=True))) # 确保所有元素都是整数
role_ids = list(map(int, user.role.values_list('id', flat=True))) # 确保所有元素都是整数
try:
dept_id = int(user.dept.id) if user.dept else None
except (ValueError, AttributeError) as e:
dept_id = None
if dept_id is None:
continue # 如果用户没有关联部门,跳过
try:
user_data = UserSchemaOut(
id=user.id,
username=user.username,
name=user.name,
birthday=user.birthday,
groups=list(user.groups.values_list('id', flat=True)), # 确保 groups 是一个整数列表
user_permissions=list(user.user_permissions.values_list('id', flat=True)),
# 确保 user_permissions 是一个整数列表
dept=dept_id,
dept_name=user.dept.name if user.dept else None,
post_name=post_names,
post=post_ids,
role=role_ids
)
except Exception as e:
print(f"Error creating UserSchemaOut for user {user.id}: {e}")
continue
users.append(user_data)
return users
前端:
通过多次,查看GET请求,修改前端代码,搞定了数组的传递:
{
field: 'dispatch',
label: '工单派发',
required: true,
component: 'ApiSelect',
componentProps: () => {
return {
api: async () => {
return await getEngineerList({ 'post_code[:]': 1 }); // 修改参数名称
},
labelField: 'name',
valueField: 'id',
mode: 'multiple',
};
},
itemProps: { validateTrigger: 'blur' },
},