2012-01-08 17 views
1

それは簡単です。ユーザーが認証されると、relaventフォームフィールドは自動的に入力され、表示されません。ユーザーが認証されていない場合は、フォームフィールドを表示します。私はどこにでも見てきましたが、私は答えを見つけることができません。誰かがこれに対処する方法を知っていますか?あなたはこのような何か行うことができ、あなたのテンプレートでuser.is_authenticatedに基づいてDjango ThreadedCommentsのフィールドを自動入力するには

答えて

0

{% if user.is_authenticated %} 
<form> 
<input type="hidden" name="username" value="{{ user.username }}" /> 
</form> 
{% else %} 
<!-- use your "regular" form here --> 

・ホープこのことができますを

+0

HERESにテンプレートの調整を持つ偉大なポスト:http://www.netboy.pl/2011/10/customizing-django-comments-for-registered-users/ –

+0

はい、これは技術的に動作します。しかし、私はスニペットを変更することなくそれを行うことを望んでいた。 –

0

この例では、実際のシステムから来る...、私は上の働いてきました。それがあなたを助けることを願っています。

import datetime 

from django.conf import settings 
from django.contrib.contenttypes.models import ContentType 
from django.utils.encoding import force_unicode 
import django.contrib.comments.forms 
from current_user.middleware import get_current_user 

class AuthCommentForm(django.contrib.comments.forms.CommentForm): 
    def get_comment_create_data(self): 
     """ 
     Returns the dict of data to be used to create a comment. Subclasses in 
     custom comment apps that override get_comment_model can override this 
     method to add extra fields onto a custom comment model. 
     """ 
     return dict(
       content_type=ContentType.objects.get_for_model(self.target_object), 
       object_pk=force_unicode(self.target_object._get_pk_val()), 
       user_name=get_current_user().username, 
       user_email=get_current_user().email, 
       user_url='', 
       comment=self.cleaned_data["comment"], 
       submit_date=datetime.datetime.now(), 
       site_id=settings.SITE_ID, 
       is_public=True, 
       is_removed=False, 
       ) 

AuthCommentForm.base_fields.pop('url') 
AuthCommentForm.base_fields.pop('name') 
AuthCommentForm.base_fields.pop('email') 
AuthCommentForm.base_fields.pop('honeypot') 
AuthCommentForm.base_fields['comment'].label = False 
+0

私はこれらの両方が働くので、私は2つの答えをしたいと思います。これはおそらく私が今後取るべきアプローチです。 –

関連する問題