Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django中自动插入登录用户用户名_Python_Django - Fatal编程技术网

Python 在Django中自动插入登录用户用户名

Python 在Django中自动插入登录用户用户名,python,django,Python,Django,在Django管理界面中,我想在发布日志时自动插入一个登录用户用户名和一篇博客文章,目前我在下拉列表中显示每个用户以供选择,但显然这不是很好,所以我希望它自动输入 这是我的密码: models.py 从django.db导入模型 从django.contrib.auth.models导入用户 # Create your models here. class Post(models.Model): title = models.CharField(max_length=200) b

在Django管理界面中,我想在发布日志时自动插入一个登录用户用户名和一篇博客文章,目前我在下拉列表中显示每个用户以供选择,但显然这不是很好,所以我希望它自动输入

这是我的密码:

models.py

从django.db导入模型 从django.contrib.auth.models导入用户

# Create your models here.
class Post(models.Model):
    title = models.CharField(max_length=200)
    body = models.TextField()
    published_date = models.DateTimeField('date published')
    author = models.ForeignKey(User, db_column="published_who")

    def __unicode__(self):
        return self.title
管理员

from blog.models import Post
from django.contrib import admin

class PostAdmin(admin.ModelAdmin):

    def save_model(self, request, obj, form, change): 
        obj.author = request.user
        obj.save()

admin.site.register(Post, PostAdmin)

非常感谢

据我所知,您需要从管理员表单中排除作者:

class PostAdmin(admin.ModelAdmin):
    exclude = ['author']

您应该在Django文档中使用:

您可以使用此选项覆盖管理员中ForeignKeyField的默认行为。 大致如下:

  def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
      if db_field.name == "author":
          kwargs["initial"]  = request.user

       return super(PostAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
*这是未经测试的

编辑:

我不知道你是否想完全禁用下拉菜单。用这种方法你不会成功。相反,您将有一个默认值
request.user
,但仍然可以选择其他用户

如果你想让它成为一个只有一个选择的下拉列表(怪异行为:p),你可以添加:

kwargs["queryset"] = Post.objects.filter(author=request.user)