Python 从Django/DRF中的公共视图中提取特定模型的标准方法?
我目前有两个基本相同的模型(从基础模型继承),但从通用视图引用它们时遇到问题: 型号:Python 从Django/DRF中的公共视图中提取特定模型的标准方法?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我目前有两个基本相同的模型(从基础模型继承),但从通用视图引用它们时遇到问题: 型号: class BaseModel(models.Model): name = models.CharField(...) owner = ForeignKey(...) class Cat(BaseModel): ... class Dog(BaseModel): ... class CommonViewset(viewsets.ModelViewSet): @li
class BaseModel(models.Model):
name = models.CharField(...)
owner = ForeignKey(...)
class Cat(BaseModel):
...
class Dog(BaseModel):
...
class CommonViewset(viewsets.ModelViewSet):
@link()
def set_owner(self, request, pk=None):
#how do I get Cat or Dog models cleanly here?
#super fugly/unstable way
url_path = request.META['PATH_INFO']
if 'cats' in url_path:
Cat.objects.get(pk=pk).owner = ...
elif 'dogs' in url_path:
Dog.objects.get(pk=pk).owner = ...
查看:
class BaseModel(models.Model):
name = models.CharField(...)
owner = ForeignKey(...)
class Cat(BaseModel):
...
class Dog(BaseModel):
...
class CommonViewset(viewsets.ModelViewSet):
@link()
def set_owner(self, request, pk=None):
#how do I get Cat or Dog models cleanly here?
#super fugly/unstable way
url_path = request.META['PATH_INFO']
if 'cats' in url_path:
Cat.objects.get(pk=pk).owner = ...
elif 'dogs' in url_path:
Dog.objects.get(pk=pk).owner = ...
我也可以将
set\u owner
链接放在不同的视图中,但这感觉很不干燥。提前感谢您的关注 您可以传递模型以在类的as\u view
方法中使用:
url(r'^cats/my-url/$', CommonViewSet.as_view(model=Cat)),
ModelViewSet
类继承自Django的View
类,因此这将在视图集实例上设置model
属性。然后可以使用self.model
为当前url获取正确的模型 谢谢!我正在使用路由器,因此模型将设置在视图集中。