为了简单起见,我们说我只有2个模型:Book,Author
class Author(models.Model):
name = models.CharField(max_length='100')
...
class Book(models.Model):
name = models.CharField(max_length='100')
authors = models.ManyToManyField(Author)
...
Run Code Online (Sandbox Code Playgroud)
我想使用作者列表过滤书籍.我试图做的是:
authors = [...] # a list of author objects
Books.objects.filter(authors__in=authors)
Run Code Online (Sandbox Code Playgroud)
但是在这里,当我想要ANDed时,作者将被ORed.有没有办法和多对多过滤?
到目前为止,我比其他Flux实现更喜欢Redux,我用它来重写我们的前端应用程序.
我面临的主要困难点:
第一个问题可以通过将状态字段保持在每种类型数据的子状态来解决.例如:
function postsReducer(state, action) {
switch(action.type) {
case "FETCH_POSTS":
return {
...state,
status: "loading",
};
case "LOADED_POSTS":
return {
status: "complete",
posts: action.posts,
};
}
}
function commentsReducer(state, action) {
const { type, postId } = action;
switch(type) {
case "FETCH_COMMENTS_OF_POST":
return {
...state,
status: { ...state.status, [postId]: "loading" },
};
case "LOADED_COMMENTS_OF_POST":
return {
status: { ...state.status, [postId]: "complete" },
posts: { ...state.posts, [postId]: action.posts },
};
}
}
Run Code Online (Sandbox Code Playgroud)
现在我可以为帖子制作一个Saga,为评论制作另一个.每个Sagas都知道如何获取请求的状态.但这很快就会导致很多重复的代码(例如帖子,评论,喜欢,反应,作者等).
我想知道是否有一种避免所有重复代码的好方法.
当我需要通过redux商店的ID获得评论时,第二个问题就出现了.是否有处理数据之间关系的最佳实践?
谢谢!
我一直在编写一些转换来帮助我重构代码库。我所做的基本上是向某些对象表达式添加新属性。为什么要从jscodeshift/recast这些对象中删除尾随逗号?我怎样才能防止这种情况发生?