Django comments Django评论应用程序,获取内容类型
我正在尝试创建一个comments应用程序,以便在需要的任何地方使用它,因此我必须使用Django comments Django评论应用程序,获取内容类型,django-comments,Django Comments,我正在尝试创建一个comments应用程序,以便在需要的任何地方使用它,因此我必须使用ContentType将注释附加到项目的不同模型上。 因此,这里: 我的型号: class Comment(models.Model): user = models.ForeignKey(User, blank=True, null=True) text = models.TextField((u'Текст комментария')) content_type = models.Fo
ContentType
将注释附加到项目的不同模型上。
因此,这里:
我的型号
:
class Comment(models.Model):
user = models.ForeignKey(User, blank=True, null=True)
text = models.TextField((u'Текст комментария'))
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
我的视图
:
def add_comment(request):
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
new_comment = Comment()
new_comment.text = request.POST['text']
new_comment.content_type = ???
new_comment.object_id = request.POST['object_id']
new_comment.user = request.user
new_comment.save()
return HttpResponseRedirect(request.META['HTTP_REFERER'])
else: ...
如何获取当前模型的内容类型?
我有应用程序新闻和模型文章,所以我想评论我的文章
我知道我可以使用ContentType.objects.get(app_label=“news”,model=“post”)
,但我得到的是确切的值,因此我的评论应用程序不会有多用途
请注意,很抱歉英语不好。检查django.contrib.comments.forms.CommentForm.get\u comment\u create\u data:它返回用于创建未保存注释实例的映射:
return dict(
content_type = ContentType.objects.get_for_model(self.target_object),
object_pk = force_unicode(self.target_object._get_pk_val()),
user_name = self.cleaned_data["name"],
user_email = self.cleaned_data["email"],
user_url = self.cleaned_data["url"],
comment = self.cleaned_data["comment"],
submit_date = datetime.datetime.now(),
site_id = settings.SITE_ID,
is_public = True,
is_removed = False,
)
所以我想你要找的是:
content_type = ContentType.objects.get_for_model(self.target_object),
请记住,self
是表单实例,self.target\u object()
返回当前注释附加到的实例