Разрешение_required_or_403 оформитель на "Добавить или изменить"?

У меня есть типичная настройка представления django для добавления новой или редактирования текущей модели "книги" (через формы). Это имеет характер:

def bookedit(request, bookid=None):
    if bookid:
        book = get_object_or_404(Book, pk=bookid)
    else: 
        book = Book()

    if request.method == 'POST':
        <form handling code.....>

Теперь я хочу установить декоратор, чтобы ограничить редактирование пользователем, создавшим Книгу. Используя django-guardian, у меня есть следующий декоратор для переноса кода выше:

@permission_required_or_403('myapp.edit_book', (Book, 'id', 'bookid'))

Это работает нормально в сценарии редактирования Книг, уже созданных, то есть 403 будет брошено, если пользователь не является создателем. Однако при добавлении новой книги bookid становится пустым и вылетает код декоратора. Есть ли хороший способ справиться с этим сценарием (без разделения функций редактирования и добавления)?

Спасибо джерри

1 ответ

Решение

Извините, но это невозможно. Django-Guardian не собирается для этого запроса. В любом случае рекомендую создавать все CRUD-представления (создавать, читать, обновлять, удалять) самостоятельно.

Другие вопросы по тегам