如果Django
中的许多模型与一个公共模型具有外键关系,那么将如何可能一个接一个地迭代所有子模型。
我了解parent.child_set.all()
,但是我想知道是否存在一些有助于使用变量访问子项的东西。
答案 0 :(得分:0)
很难说出您要做什么。...但是一个简单的getattr可能会帮助
import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.Path;
import javax.validation.constraints.NotNull;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static java.util.Arrays.asList;
@Provider
public class ValidationExceptionMapper implements ExceptionMapper<ConstraintViolationException> {
private <T> List<T> mergeList(@NotNull List<T> l1 , @NotNull List<T> l2 ) {
return new ArrayList<T>(l1) {{addAll(l2);}};
}
@Override
public Response toResponse(final ConstraintViolationException exception) {
Map<Path,List<String>> errors =
exception.getConstraintViolations()
.stream()
.collect(
Collectors.toMap(
ConstraintViolation::getPropertyPath,
cv -> asList(cv.getMessage()),
this::mergeList
)
);
return Response.status(Response.Status.BAD_REQUEST)
.entity(errors)
.build();
}
}