gpt4 book ai didi

python - 自定义 Django 评论应用程序

转载 作者:太空宇宙 更新时间:2023-11-04 06:20:30 25 4
gpt4 key购买 nike

我在自定义 Django 评论框架时遇到问题。我需要添加一个“公司”字段。我已经按照文档进行操作,但并没有真正取得进展。它离工作不远,因为当我将 COMMENTS_APP = 'comments_app' 添加到我的 settings.py 时,'comments' 应用程序从管理界面中消失了。当我尝试写评论时,它会出现公司字段,要求您提供电子邮件、网址等。

我希望能够在管理面板中查看所有评论以及我添加的公司字段。

我需要创建一个 admin.py 还是我只是缺少了一些东西?

这是我的自定义评论应用程序代码:

//型号

 from django.db import models
from django.contrib.comments.models import Comment

class CommentWithAddedFields(Comment):
company = models.CharField(max_length=300)

//表格.py

from django import forms
from django.contrib.comments.forms import CommentForm
from comments_app.models import CommentWithAddedFields

class CommentFormWithAddedFields(CommentForm):
company = forms.CharField(max_length=300)


def get_comment_model(self):

return CommentWithAddedFields


def get_comment_create_data(self):

data = super(CommentFormWithAddedFields, self).get_comment_create_data()
data['company'] = self.cleaned_data['company']
return data

//__init.py

from comments_app.models import CommentWithAddedFields
from comments_app.forms import CommentFormWithAddedFields

def get_model():
return CommentWithAddedFields


def get_form():
return CommentFormWithAddedFields

我已经在我的 settings.py 文件中添加了该应用程序,并添加了 COMMENTS_APP = 'comments_app' 如上所述。

我是不是漏掉了什么?

谢谢

最佳答案

是的,如果您希望您的模型出现在 django 管理中,您需要为您的自定义评论应用程序创建一个 admin.py。您应该能够子类化 CommentsAdmin,并根据需要进行自定义。

from django.contrib import admin
from django.utils.translation import ugettext_lazy as _, ungettext
from django.contrib.comments.admin import CommentsAdmin
from django.contrib.comments import get_model

from comments_app.models import CommentWithAddedFields

class MyCommentsAdmin(CommentsAdmin):
# Same fieldsets as parent admin, but include 'company'
fieldsets = (
(None,
{'fields': ('content_type', 'object_pk', 'site')}
),
(_('Content'),
{'fields': ('user', 'user_name', 'user_email', 'user_url', 'company', 'comment')}
),
(_('Metadata'),
{'fields': ('submit_date', 'ip_address', 'is_public', 'is_removed')}
),
)

# Only register the admin if the comments model is CommentWithAddedFields
# The equivalent section in django.contrib.comments.admin is what prevents
# the admin from being registered when you set COMMENTS_APP = 'comments_app'
# in your settings file
if get_model() is CommentWithAddedFields:
admin.site.register(CommentWithAddedFields, MyCommentsAdmin)

关于python - 自定义 Django 评论应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12689680/

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