当保存新的模型实例时,我try 向用户发送邮箱,并且我希望邮箱包含指向该模型实例的管理页面的链接.有没有办法获得正确的URL?我想Django 一定把那些信息藏在什么地方了.
当保存新的模型实例时,我try 向用户发送邮箱,并且我希望邮箱包含指向该模型实例的管理页面的链接.有没有办法获得正确的URL?我想Django 一定把那些信息藏在什么地方了.
这Django snippet个应该可以做到:
from django.urls import reverse
from django.contrib.contenttypes.models import ContentType
from django.db import models
class MyModel(models.Model):
def get_admin_url(self):
content_type = ContentType.objects.get_for_model(self.__class__)
return reverse("admin:%s_%s_change" % (content_type.app_label, content_type.model), args=(self.id,))
self
表示父模型类,即self.id
表示对象的实例id
.您还可以通过在方法签名的顶部粘贴@property
decorator,在模型上将其设置为property
.
EDIT: Chris Pratt below的答案在ContentType
表上保存了一个DB查询.我的答案仍然"有效",而且对Django model instance._meta
内部 struct 的依赖性更小.仅供参考.