我不太明白,我怎么能sensically在模型的reverse
使用命名空间get_absolute_url
查找。说我有app_name=MYAPP
in URL配置,那么我需要把reverse('MYAPP:blah-detail ...
在get_absolute_url
。在我看来,如果我介绍另一个URL配置具有不同app_name
,模型的get_absolute_url
仍然会得到我MYAPP的URL。该app_name
不能导入,因为周期性的依赖,这将创造model.py
无论是。
有没有一个规范的解决方案呢?
我不得不读你的问题了几次,我不知道你问真。
该absolute_url的目的仅仅是在数据库对象的绝对路径。这就是为什么它通常写为模型类的方法。
如果您创建一个应用,你会用一个完全不同的命名空间,这意味着不同的路径不同的对象。
如果我错过了你明白请让我知道这样我就可以回答正确。
根据您的评论试试这个。
from .urls import app_name
def get_absolute_url(self):
return reverse(f'{app_name}:detail', args=[self.slug])
# or
from .apps import <AppName>Config
def get_absolute_url(self):
return reverse(f'{<AppName>Config.name}:detail', args=[self.slug])
我更新了答案,这两个解决方案,我们在评论中讨论。