それは簡単です。ユーザーが認証されると、relaventフォームフィールドは自動的に入力され、表示されません。ユーザーが認証されていない場合は、フォームフィールドを表示します。私はどこにでも見てきましたが、私は答えを見つけることができません。誰かがこれに対処する方法を知っていますか?あなたはこのような何か行うことができ、あなたのテンプレートでuser.is_authenticatedに基づいてDjango ThreadedCommentsのフィールドを自動入力するには
1
A
答えて
0
:
{% if user.is_authenticated %}
<form>
<input type="hidden" name="username" value="{{ user.username }}" />
</form>
{% else %}
<!-- use your "regular" form here -->
・ホープこのことができますを
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つの答えをしたいと思います。これはおそらく私が今後取るべきアプローチです。 –
HERESにテンプレートの調整を持つ偉大なポスト:http://www.netboy.pl/2011/10/customizing-django-comments-for-registered-users/ –
はい、これは技術的に動作します。しかし、私はスニペットを変更することなくそれを行うことを望んでいた。 –