我不太了解如何在模型的reverse
中明智地使用命名空间的get_absolute_url
查找。假设我在URLConf中有app_name=MYAPP
,那么我需要在reverse('MYAPP:blah-detail ...
中放入get_absolute_url
。在我看来,如果我介绍另一个URL配置具有不同app_name
,模型的get_absolute_url
仍然会得到我MYAPP的URL。 app_name
不能导入model.py
,因为这会产生周期性依赖性。
对此有规范的解决方案吗?
答案 0 :(得分:0)
我不得不读了几次您的问题,我不确定您真正在问什么。
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])
我更新了我们在评论中讨论的两种解决方案的答案。