限制在admin中创建对象

时间:2011-04-26 09:11:55

标签: django django-models django-admin django-forms

尝试在管理页面中将对象限制为1。我得到“newuserpath对象与主键u'add / foo”不存在。如果只是在没有设置任何东西的情况下返回它会没问题,但理想情况下会出现错误消息。这就是我在admin.py中的内容。

from django.contrib import admin
from fileman.models import Newuserpath
from django.http import HttpResponseRedirect

class NewuserpathAdmin(admin.ModelAdmin):
    def add_view(self, request):
        if request.method == "POST":
            # Assuming you want a single, global Newuserpath object
            if Newuserpath.objects.count() > 0:
                # redirect to a page saying 
                # you can't create more than one
                return HttpResponseRedirect('foo')
        return super(NewuserpathAdmin, self).add_view(request)

admin.site.register(Newuserpath, NewuserpathAdmin)

我在这里遵循最佳答案:Is it possible to limit of object creation of a model in admin panel?

它只是不太有效。我尝试使用另一种方法,在forms.py中添加代码并从那里导入。但我不确定如何在我的admin.py中使用它。

1 个答案:

答案 0 :(得分:0)

错误只是您使用重定向的相对路径 - 因此浏览器正在将'foo'添加到现有网址admin/app/newuserpath/add/

管理此问题的最佳方法是使用URL反向功能 - 假设您已将错误页面URLconf命名为“newuserpath_error”:

return HttpResponseRedirect(reverse('newuserpath_error'))