django-users - 如何将当前登录的用户保存到 Django 中的模型
问题描述
我正在尝试获取当前登录的用户并将其保存到模型中。我收到以下错误
“无法分配“<SimpleLazyObject: <User: rsomani005>>”:“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
我建议使用这个来注册用户,因为它是自动且完整的。
并从那里使用该对象来满足您的需要。您可以将其作为上下文传递或从中传递模型对象。
推荐阅读
- python-3.x - 为什么 item2 的值发生了变化?
- laravel - 添加自定义 VideoGenerator Laravel Spatie 媒体库
- php - 投射到查询构建器中
- android - 如何使用 Android 在热敏打印机中打印图像?
- php - MYSQL 只能将数字插入到表中
- php - laravel 5.4:在从表单弹出评论模型提交数据之前,然后将它们全部发送
- python-3.x - neupy 性能缓慢
- ios - 第二次选择 UITabBarItem 时关闭以前的 ViewController
- javascript - React,与 className inline 或 const 的性能差异
- android - 广播安卓