Как получить пользователя из change_view и add_view для проверки - PullRequest
0 голосов
/ 19 января 2011

Я пытаюсь использовать проверку с объектом request.user, чтобы ограничить обновления некоторых строк для определенных пользователей на сайте администратора django.У меня сложилось впечатление, что мне нужно переопределить метод change_view ModelAdmin, чтобы передать объект запроса в форму.Я посмотрел на метод change_view в django.contrib.admin.options, но, как новичок в django, у меня возникли проблемы с пониманием, где в методе change_view мне нужно внести эти изменения.Любые указатели в правильном направлении были бы хороши.

class IssuesAdmin(admin.ModelAdmin):
    def change_view(self, request, object_id, extra_context=None):
        #modify lines to pass request to form

    form = IssuesAdminForm


class IssuesAdminForm(forms.ModelForm):
    class Meta:
        model = Issues

    def __init__(self, *args, **kwargs):
        self.request = kwargs.pop('request', None)
        super(IssuesAdminForm, self).__init__(*args, **kwargs)


    def clean_product(self):
        if self.request.user.name=='someone'
            return self.cleaned_data["product"]
        else:
            raise forms.ValidationError("Nope!")

1 Ответ

1 голос
/ 14 октября 2011
class IssuesAdmin(admin.ModelAdmin):
def change_view(self, request, object_id, extra_context=None): #remember to edit also add_view()... etc
    self.form.request = request

form = IssuesAdminForm

class IssuesAdminForm(forms.ModelForm):
    class Meta:
       model = Issues

    def __init__(self, *args, **kwargs):

       self.request = # do what you need ;)
       super(IssuesAdminForm, self).__init__(*args, **kwargs)


def clean_product(self):
    if self.request.user.name=='someone'
        return self.cleaned_data["product"]
    else:
        raise forms.ValidationError("Nope!")
...