2012-08-31 2 views
0

장고 관리 인터페이스에서 나는 게시 할 때 블로그 게시물과 함께 로그인 사용자 사용자 이름을 자동으로 삽입하고 싶습니다. 현재 모든 사용자를 드롭 다운 목록에 표시하고 있습니다. 에서 선택하지만 분명히 이것은 좋지 않으므로 자동으로 입력하고 싶습니다. django.contrib.auth.models에서 django.db 수입 모델 에서자동 삽입 로그인 사용자 장고의 사용자 이름

models.py

가져올 사용자

# 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) 

많은 감사! 당신이 사용해야하는 장고 문서에

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

답변

0

이것으로 관리자. 의 라인을 따라 뭔가 :

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) 
관련 문제