我想将当前用户的用户实例传递给基于类的视图中的变量,并在第二步(在python脚本中)将其提供给定义为author = models.ForeignKey(User, on_delete=models.PROTECT)
的数据库表列。与该列相关,我收到以下完整性错误:NOT NULL constraint failed..
从回溯中我可以看到我归因于loggedUser
的变量self.request.user
是SimpleLazyObject
。
我发现another question与我的相似。但它讨论了与函数相关的问题 - 我很难根据基于类的视图调整答案。
如何通过我的用户实例?
谢谢!
from django.db import models
from django.contrib.auth.models import User
class Data(models.Model):
temperature = models.FloatField(max_length=5)
author = models.ForeignKey(User, on_delete=models.PROTECT)
from . import apythonscript
from django.views.generic import TemplateView
class PlotGraphView(TemplateView):
def get_context_data(self, **kwargs):
loggedUser = self.request.user
context['plot'] = apythonscript.putDataInDB(loggedUser)
return context
from app.models import Data
def putDataInDB(loggedUser):
mydata=json.loads(response)
for line in mydata['feeds']:
# try:
data_handle = Data(temperature=line['field1'], author=loggedUser,)
data_handle.save()
# except:
# continue
答案 0 :(得分:1)
要获取Django中当前登录的用户,您只需使用request.user
即可。在CBV中,request
是一个类对象,因此您应该使用self.request
来访问请求数据
的例如强>
class PlotGraphView(LoginRequiredMixin, TemplateView):
# your stuff
def get_current_user(self): # this is just a custom function, you don't
return self.request.user
因此,在CBV
范围内的任何位置,您都可以self.request.user