django - 按当前用户验证 ModelAdmin 表单

django - validate ModelAdmin forms by current user

我有很多对象都有一个 user 字段,我想用当前用户自动填充这些字段。为此,我有一个 mixin

class AttachUserMixin(object):

    def save_model(self, request, obj, form, change):
        """
        При сохранении модели присвоить ему текущего юзера
        """
        obj.user = request.user
        obj.save()

但是,在我的一些模型表单中,我得到了当前用户的一些验证,如下所示:

def clean(self):
    data = super(ListForm, self).clean()
    if data['type'] == ListTypes.ctr0.value:
        existing_lists = (List.objects
                          .filter(country=data['country'],
                                  user=data['user'],
                                  ad_network=data['ad_network'],
                                  type=data['type'])
                          .exclude(pk=self.instance.pk)
                          .all())

如果我从模型表单中删除 user 字段,显然会崩溃。那么如何从 clean 中访问当前用户?

我举例回答:

class X_Form(forms.ModelForm):
    def __init__(self,request,*args,**kwargs):
        super(X_Form, self).__init__(*args,**kwargs)
        self.request = request

    def clean(self):
        user = self.request.user
        ...

并在浏览量中

def post_method(request):
    form = X_Form(data=request.POST or None,request=request)
    ...

当然,如果我没有理解错的话,你的意思是