gpt4 book ai didi

django-comments - Django 评论应用程序,获取内容类型

转载 作者:行者123 更新时间:2023-12-02 00:33:28 24 4
gpt4 key购买 nike

我正在尝试创建一个评论应用程序以在任何需要的地方使用它,所以我想我必须使用 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')

我的 View :

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_comment_create_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_object() 返回当前评论所附加的实例。

关于django-comments - Django 评论应用程序,获取内容类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5696310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com