2012-08-31 57 views
0

在Django管理界面中我想在發佈時自動插入登錄用戶名和博客文章,目前我已經在每個用戶的下拉菜單中顯示每個用戶選擇但顯然這不是很好,所以我想它自動輸入這個。自動插入登錄用戶用戶名在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 

admin.py

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) 

非常感謝!

回答

0

按我的理解問題,您需要從管理形式排除作者:

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

你應該用的是Django文檔:https://docs.djangoproject.com/en/1.3/ref/contrib/admin/#django.contrib.admin.ModelAdmin.formfield_for_foreignkey

可以覆蓋一個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)