首页 > 其他 > 详细

关于在django的modelform中设置默认修改字段

时间:2021-05-17 15:30:10      阅读:14      评论:0      收藏:0      [点我收藏+]

最近在写一个crm系统,在用户注册后,展示负责人,但是并不希望用户可以修改它。查阅了网上的很多资料,大多都是一知半解,无奈修改了一晚上,最终解决。

在django的中间件里,我们可以对POST发来的数据进行修改,即使用户修改也是无效的,这是我目前想到的最好办法。(声明一下,为了提高io效率,防止多个表单同时修改造成的困难,每一个model我都是单独建立的,没有设置外键字段,只有pk)

这是我的用户model,负责人一旦注册,不可修改或修改无效
class UserInfo(models.Model):
    uid = models.AutoField(primary_key=True)
    username = models.CharField(max_length=15,unique=True, help_text=名字必须唯一)
    password = models.CharField(max_length=15)
    email = models.EmailField()
    telephone = models.CharField(max_length=11)
    fuzeren = models.CharField(max_length=20,unique=True,blank=True, null=True,)
    def __str__(self):
        return self.username
我们可以在form中进行提示,即使修改了也是无效的
class DianMianModelForm(forms.ModelForm):
    class Meta:
        model = models.DianMian
        fields=__all__
        labels = {
            fuzeren:负责人(默认为初始注册负责人,无法修改),
            mingcheng:名称,
            telephone:电话,
            weizhi:位置,
            is_active:营业ing?(填是或否),
        }
在中间件里对所有的POST请求进行修改(需要单独的话,可以在views里面进行处理)
class UserAuth(MiddlewareMixin):

    def process_request(self,request):
        white_list = [reverse(login),reverse(register),]
        if request.path in white_list:
            return
        request.POST = request.POST.copy()
        request.POST[fuzeren] = request.session.get(fuzeren)
        user_uid = request.session.get(user_uid)
        if user_uid:
            user_obj = models.UserInfo.objects.get(uid=request.session.get(user_uid))
            # 将当前登录用户对象作为一个属性,封装给了request
            request.user_obj = user_obj
            return
        else:
            return redirect(login)

 

关于在django的modelform中设置默认修改字段

原文:https://www.cnblogs.com/zzj666/p/14776391.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!