Python 在Django中自动插入登录用户用户名
在Django管理界面中,我想在发布日志时自动插入一个登录用户用户名和一篇博客文章,目前我在下拉列表中显示每个用户以供选择,但显然这不是很好,所以我希望它自动输入 这是我的密码: models.py 从django.db导入模型 从django.contrib.auth.models导入用户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
# 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)