当保存新的模型实例时,我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 的依赖性更小.仅供参考.

Django相关问答推荐

以特定顺序获取模型实例时出现问题

无法在views.py django中验证密码

SQLite上可以正常使用Many2Many链接注释,但MariaDB上无法正常使用(生产环境)

当从 fastapi 发送请求时,Django 无法对 Postgres 执行查询

dj_rest_auth 中的 PyTest 警告- RemovedInDjango40Warning: django.conf.urls.url() 已弃用,取而代之的是 django.urls.re_path()

Django rest框架:自定义对象权限不起作用

Pymongo:搜索文档时忽略空输入值

Django 过滤器:过滤隐藏在多层模型 struct 中的对象

EmailBackend 用于在 Django 中通过多个 SMTP 发送邮箱

Django - 站点匹配查询不存在

django-rest-framework 如何使模型序列化器字段成为必需

如何在 Django ORM 中执行 GROUP BY ... COUNT 或 SUM?

Django: Admin:在管理员中更改字段的小部件

在 Django 管理员中嵌套内联?

Django rest-auth allauth 注册,带有邮箱、名字和姓氏,没有用户名

get_or_create() 是否必须立即保存?

过滤 Django 数据库中包含数组中任何值的字段

Django:DoesNotExist从何而来?

如何使用 Django/nginx 部署仅限 HTTPS 的站点?

Django 字符串到日期格式