[英]request.user in Django model
我正在使用 Django 模型為表單創建字段。 我希望自動檢測並填寫用戶的用戶名,這樣我就可以將其隱藏在我的表單中(而不是讓他們從包含每個人用戶名的長列表中選擇他們的用戶名)。 為此,我正在使用:
current_user = request.user
然后將默認值設置為 current_user。 但是,我不斷收到此錯誤:
NameError: name 'request' is not defined
我假設您不能在 Django 模型中使用請求,但是有沒有辦法解決這個問題? 這是我的 models.py 文件的相關部分:
class StockTickerSymbol(models.Model):
StockName = models.CharField(max_length=7, unique=True)
current_user = request.user
user = models.ForeignKey(User, default=current_user)
任何人都知道我如何在我的模型中使用請求,或者以某種方式調用變量 current_user?
在這里,您尚未在該模型類范圍內導入請求。 這是您如何獲得用戶:
# model
class StockTickerSymbol(models.Model):
StockName = models.CharField(max_length=7, unique=True)
user = models.ForeignKey(User)
def save(self,**kwargs):
if kwargs.has_key('request') and self.user is None:
request = kwargs.pop('request')
self.user= request.user
super(StockTickerSymbol, self).save(**kwargs)
#views:
def post(self, request):
if form.is_valid():
sts=StockTickerSymbol()
sts.StockName= form.cleaned_data['StockName']
if form.cleaned_data['user'] is None: #null check
sts.save(request=request)
else:
sts.user= form.cleaned_data['user']
sts.save(request=request)
對於模型形式:
class SomeForm(forms.ModelForm):
...
def save(self, commit=True ,*args, **kwargs):
request = None
if kwargs.has_key('request'):
request = kwargs.pop('request')
m = super(SomeForm, self).save(commit=False, *args, **kwargs)
if m.user is None and request is not None:
m.user= request.user
m.save()
在視圖中:
def post(self, request):
if form.is_valid():
form.save(request=request)
return ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.