5

私はこのようなスキーマを持っています:

models.py:

class Evento(models.Model):
    [...]
    user = ForeignKey(model=User)

forms.py:

class EventoForm(forms.ModelForm):
    class Meta:
        model = Evento

汎用ビューUpdateViewのサブクラス。そのビューへのアクセスを、そのEventoインスタンスで指定されたユーザーに制限したいと思います。そのための最善のアプローチはどこにありますか?

4

1 に答える 1

6

ディスパッチを呼び出した後、ユーザーが権限を持っているかどうかに関係なく、すべてのデータが保存されます。ディスパッチを呼び出す前に、許可を確認する必要があります。このスニペットhttp://djangosnippets.org/snippets/2426/を見てください。しかし、get_objectメソッドを再定義するより良い方法は次のとおりです。

def get_object(self, *args, **kwargs):
    obj = super(EditarEvento, self).get_object(*args, **kwargs)
    if obj.user != self.request.user:
        raise PermissionDenied() #or Http404
    return obj
于 2013-03-15T07:08:48.737 に答える