如何将当前登录的用户保存到 Django 中的模型
How to Save Currently Logged in User to Model in Django
我正在尝试获取当前登录的用户并将其保存到模型中。我收到以下错误
“无法分配“>”:“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)
在您的一个视图中获取登录用户的简单方法是:
user = request.user
但这通常是当您创建的用户模型类似于 model.py:
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
pass
我建议使用这个来注册用户,因为它是自动且完整的。
然后根据需要使用该对象。您可以将其作为上下文传递或
从中获取模型对象。
我正在尝试获取当前登录的用户并将其保存到模型中。我收到以下错误
“无法分配“
我正在使用 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)
在您的一个视图中获取登录用户的简单方法是:
user = request.user
但这通常是当您创建的用户模型类似于 model.py:
from django.contrib.auth.models import AbstractUser
from django.db import models
class User(AbstractUser):
pass
我建议使用这个来注册用户,因为它是自动且完整的。
然后根据需要使用该对象。您可以将其作为上下文传递或 从中获取模型对象。