开发者

How to get user from change_view and add_view to validation

开发者 https://www.devze.com 2023-02-05 06:04 出处:网络
I\'m trying to use validation with the request.user object to restrict updates to some rows for specific users within the django admin site. I get the impression I need to override the ModelAdmin chan

I'm trying to use validation with the request.user object to restrict updates to some rows for specific users within the django admin site. I get the impression I need to override the ModelAdmin change_view method to pass the request object to the form. I've looked at the change_view method in django.contrib.admin.options, but as someone very new to django, am having trouble understanding where in the change_view method I need to make these modifications. Any pointers in the right direction would be great.

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开发者_C百科.ValidationError("Nope!")


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!")
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号