如何将当前登录的用户保存到 Django 中的模型

时间:2021-03-10 12:39:18

标签: django-users django-request

我正在尝试获取当前登录的用户并将其保存到模型中。我收到以下错误

“无法分配“>”:“process_master.user”必须是“用户”实例”

我正在使用 Django 的内置用户模型。

我的模型看起来像这样 -

class User(auth.models.User,auth.models.PermissionsMixin):
    def __str__(self):
        return "@{}".format(self.username)

class plan_master(models.Model):
    plan_name = models.CharField(max_length=256)
    plan_description = models.CharField(max_length=256)
    plan_price = models.FloatField()
    plan_active_status = models.BooleanField(default=True)
    plan_credits = models.IntegerField(default=0)
    registration_type_name = models.CharField(max_length=50)

我的视图文件是这样的 -

class FileFieldView(LoginRequiredMixin,FormView):
    form_class = FileFieldForm
    template_name = 'merge_ops/merge_ops.html' 
    success_url = reverse_lazy('merge_ops:file_setup') 

    def post(self, request, *args, **kwargs):
        form_class = self.get_form_class()
        form = self.get_form(form_class)
        files = request.FILES.getlist('file_field')

        if form.is_valid():
            for f in files:
                fs = FileSystemStorage()
                fs.save(f.name,f)
            obj = process_master()
            user = request.user
            obj.user = user
            obj.process_date = datetime.now()
            obj.number_of_workbooks = len(files)
            obj.save()
            return self.form_valid(form)
        else:
            return self.form_invalid(form)

1 个答案:

答案 0 :(得分:0)

在您的一个视图中获取登录用户的一种简单方法是:

user = request.user

但这通常是当您创建的用户模型与 model.py 中的类似时:

from django.contrib.auth.models import AbstractUser
from django.db import models


class User(AbstractUser):
    pass

我建议使用这个来注册用户,因为它是自动且完整的。

然后从那里使用该对象来满足您的需要。您可以将其作为上下文传递或 来自它的源模型对象。

相关问题