模型get_absolute_url中命名空间视图的Django url反向

时间:2019-02-02 21:12:24

标签: django

我不太了解如何在模型的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,因为这会产生周期性依赖性。

对此有规范的解决方案吗?

1 个答案:

答案 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])

我更新了我们在评论中讨论的两种解决方案的答案。