2012-01-08 52 views

回答

0

在你的模板,你可以做這樣的事情:

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

希望這有助於...

+0

繼承人偉大的職位與模板的調整:http://www.netboy.pl/2011/10/customizing-django-comments-for-registered-users/ – 2012-01-09 04:55:03

+0

是這個工程技術上。但我希望能夠做到這一點,而不必更改片段。 – 2012-05-27 16:23:17

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

我希望我能做兩個答案,因爲這兩個工作。這可能是我將要採取的方法。 – 2012-01-09 04:51:46