如何解决Django - 如何设置用户创建文章是由用户登录
class Article(models.Model):
slidenumber = models.AutoField(primary_key=True)
title = models.CharField(max_length=255)
category = models.CharField(default='',max_length=30)
description = models.TextField(default="")
timeupdate = models.DateTimeField('Date Published')
author = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,editable=False,default=1)
如果我将作者字段设置为默认值=1,当我登录 django 管理页面创建文章时,它总是让作者是我的超级用户(ID = 1),所以如何设置我是否登录 django 管理页面由其他用户(不是我的超级用户)创建文章,作者字段将获取用户当前登录。
解决方法
logged used 的默认值可以通过
{{request.user}}
这将返回当前登录的用户。 在您的视图中,使用这样的函数创建一个默认值
def get_initial():
return {request.user}
创建表单时,
user=forms.ModelChoiceField(
widget=forms.HiddenInput,queryset=get_user_model().objects.all(),disabled=True,
,
好吧,我不知道你在管理页面或视图中的哪里创建了文章。
- 如果您在 django-admin 中创建文章,只需重写
.save()
方法并设置作者。
此代码将起作用:
class Article(admin.ModelAdmin):
def save_model(self,request,obj,form,change):
obj.author = request.user
super(Article,self).save_model(request,change)
- 如果您在视图中创建文章,只需重写
post()
方法逻辑并将作者设置为如上
def save_model(self,change):
obj.author = request.user
super().save_model(request,change)
效果很好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。