2013-10-10 1 views
0

관리자 패널을 통해 로그인하고 더 많은 콘텐츠를 게시해야하는 블로그가 있습니다. 내 문제는 사용자가 자신의 사용자 이름으로 게시 할 수 있도록하려는 것입니다.admin.py가 현재 모델에 로그인 한 사용자 만 제공하도록 수정하십시오 .ForeignKey (User)

내 models.py이 :

class Post(models.Model): 
    author = models.ForeignKey(User) 
    ... 

어떻게 admin.py 또는 수정할 수 models.py해야합니까?

답변

2

먼저 exclude 관리자 양식의 작성자 필드. 그런 다음 관리자 save_model 방법에 저자로 로그인 한 사용자를 추가

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

    def save_model(self, request, obj, form, change): 
     if obj.author is None: 
      obj.author = request.user 
     obj.save() 
+1

오른쪽 접근 방식을, 당신이 여기 getattr''사용하는 이유는 확실하지 않다하더라도 -'하지 않을 경우 obj.author' 괜찮을 것입니다. –

+0

왜'if' 문없이'obj.author = request.user'를 설정하지 않는 것이 좋습니까? –

+1

@UlfricStorm : if 문없이이 작업을 수행하면 개체가 admin에 저장 될 때마다 작성자가 업데이트됩니다. if 문을 사용하면 작성자가 객체 생성시에만 추가됩니다. – hellsgate

관련 문제