ограничить создание объектов в админке - PullRequest
0 голосов
/ 26 апреля 2011

Попытка ограничить мои объекты 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)

Я следую за лучшим ответом здесь: Можно ли ограничить создание объекта моделью в панели администратора?

Это просто не совсем работает. Я попытался использовать другой метод, добавив код в forms.py и импортировав его оттуда.Но я не уверен, как использовать это в моем admin.py.

1 Ответ

0 голосов
/ 26 апреля 2011

Ошибка просто в том, что вы используете относительный путь для вашего перенаправления - поэтому браузер добавляет 'foo' к существующему URL, admin/app/newuserpath/add/.

Лучший способ справиться с этим - использовать функцию обратного URL-адреса - при условии, что вы указали странице ошибки URL-адрес с именем 'newuserpath_error':

return HttpResponseRedirect(reverse('newuserpath_error'))
...