如果没有退出,请重定向到模型创建

时间:2019-10-27 08:57:49

标签: django django-models django-admin

当我以超级用户身份登录django时,如果某个模型的对象或该模型中最后一个对象的字段不存在或未设置,我将如何重定向到该模型的创建?除非制作成功,否则不要让我访问WebApp吗?

我猜测每当超级用户登录并检查对象或最后一个对象中的字段时,都会运行一个函数。我只是不知道如何实现此功能以及将其放置在何处。

编辑:非常抱歉,我没有进一步阐述我的问题。
-我想在超级用户登录到Webapp时检查对象的存在,而不是当他们从索引中单击模型时检查对象的存在。需要一个对象存在,这就是为什么当它不存在并且超级用户登录时,将采用它们来添加表单,并且在对象存在之前不允许使用网站的其余部分。因此,当有人登录Django管理站点时,我想运行一个函数来检查该模型的存在并相应地进行重定向。

感谢您的阅读。

2 个答案:

答案 0 :(得分:0)

在您的管理员中,您可以使用以下方式覆盖change_view

class MyModelAdmin(admin.ModelAdmin):
    ... your admin declaration
    def change_view(self, request, object_id, form_url='', extra_context=None):
        try:
            MyModel.object.pk(pk=object_id)
            return super().change_view(request, object_id, form_url=form_url, extra_context=extra_context):
        except MyModel.DoesNotExist:
            return redirect('admin:yourapp_yourmodel_add')

未对SQL进行优化,因为_changeform_view将影响实例实例,但这是最简单的解决方案。

答案 1 :(得分:0)

您可以在用户登录后使用信号来运行功能

from django.contrib.auth.signals import user_logged_in
from django.dispatch import receiver


@receiver(user_logged_in)
def superuser_login(sender, user, request, **kwargs):
    if user.is_superuser:
        # Do stuff here