如何解决在models.py中使用auth_user_model时Django request.user不起作用
我通过导入设置在我的 models.py 中使用 User 模型(这是一个自定义模型)并通过 AUTH_USER_MODEL 获取它,但在我看来似乎 request.user 未被识别为用户类。
这是模型
from django.db import models
from django.conf import settings
from django.utils import timezone
User = settings.AUTH_USER_MODEL
class Site(models.Model):
name = models.CharField(
max_length=100,)
slug = models.SlugField(max_length=20)
admin = models.ForeignKey(
User,related_name="administrators",on_delete=models.SET_NULL,blank=True,null=True,)
people = models.ManyToManyField(User)
def __str__(self):
return self.name
这里是视图中的逻辑
def create_site(request):
user = request.user
print(user)
form = CreateSiteForm(
request.POST or None,initial={
"admin": user,},)
if form.is_valid():
form.save()
return redirect("projects")
context = {
"form": form,}
return render(request,"tracking/create-site.html",context)
这是来自终端的错误
return self.is_bound and not self.errors
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\forms\forms.py",line 170,in errors
self.full_clean()
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\forms\forms.py",line 374,in full_clean
self._post_clean()
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\forms\models.py",line 408,in _post_clean
self.instance = construct_instance(self,self.instance,opts.fields,opts.exclude)
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\forms\models.py",line 63,in construct_instance
f.save_form_data(instance,cleaned_data[f.name])
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\db\models\fields\__init__.py",line 910,in save_form_data
setattr(instance,self.name,data)
File "C:\Users\Papis\Desktop\Dev\projects\lib\site-packages\django\db\models\fields\related_descriptors.py",line 215,in __set__
raise ValueError(
ValueError: Cannot assign "'papis'": "Site.admin" must be a "User" instance.
request.user 返回用户的用户名。我想知道是什么问题。
任何帮助将不胜感激。 提前致谢......
解决方法
在模型中使用它而不是用户
from django.contrib.auth.models import User
并将您的观点更改为此
user=request.user.id
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。