小编dt0*_*xff的帖子

Django REST框架:泛型或ModelViewSets?

我使用泛型和普通URL作为我的REST API,但现在我遇到了问题:我想要自定义操作,简单的视图来为我的模型做一些事情,比如"运行","发布"等.

ViewSetaction装饰者创建自定义动作,但只有在ViewSets中,还有步进路由器,这使我们能够使用railsish convention-over-configuration简化所有操作.

但我发现这ModelViewSet给了我们相同的能力,如泛型:完整的CRUD,序列化器,过滤器,cusstom前/后和查询集,所以,它会导致问题:

为什么有泛型,如果ModelViewSet给予相同的能力和更多?有什么区别?

python django rest django-rest-framework

9
推荐指数
3
解决办法
1万
查看次数

Django模型中的很多功能,如何分离它?

我得到了带有大量子应用程序的巨大 Django 应用程序。目前,我正在一个子应用程序中重新设计模型,所以我遇到了一个......问题。我有大量分离的丑陋函数来处理模型。基本上,它类似于:

def get_some_things(...):
 def postprocess(...):
  pass
 def preprocess(...):
  pass
 preprocess(...)
 x = MyModel.objects.....get(1)
 return postprocess(x, ...)
Run Code Online (Sandbox Code Playgroud)

我有很多这样的功能,它真的很丑!它在当前代码中使用起来很丑陋(如DatabaseAccessor.get_db().django_kitty().get_some_things(...))。所以,我的想法是让开发人员能够像这样使用这些功能:

MyModel.get_some_things(...)
Run Code Online (Sandbox Code Playgroud)

或者甚至像这样:

MyModel.objects.get_some_things(...)
Run Code Online (Sandbox Code Playgroud)

但!我的函数太多了,所以我无法在model.py 中编写它。所以,我有几个想法:

  1. 创建 model_mymodel.py 并使用其中的所有函数和静态函数定义我的模型。但是......我不确定,我需要把它放在模型类中吗?
  2. 创建 mymodel_manager.py 并为 mymodel 创建模型管理器,在这里定义函数。但是......我的一些“函数”应该只返回字典、列表甚至数字。我想知道,让模型管理器能够返回除 QuerySet 之外的东西在意识形态上是错误的吗?
  3. 覆盖__getattr__的为MyModel类和类似的模块动态地加载functions_common.pyfunctions_things.py等等,店内聚集功能于字典和调用需要的?

python django

1
推荐指数
1
解决办法
751
查看次数

标签 统计

django ×2

python ×2

django-rest-framework ×1

rest ×1