我目前有两个基本相同的模型(继承自基础模型),但我从一个常见的视图中引用它们时遇到了问题:
型号:
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_owner
链接放在不同的视图中,但感觉不干。在此先感谢您对此进行调查!
答案 0 :(得分:1)
您可以传递模型以在您班级的as_view
方法中使用:
url(r'^cats/my-url/$', CommonViewSet.as_view(model=Cat)),
ModelViewSet
类继承自Django的View
类,因此这将在视图集的实例上设置model
属性。然后,您可以使用self.model
为当前网址获取正确的模型。