문제

는 데 문제가 있으로 사용자 정의 장고 의견 framework.필요를 추가하'회사'다.나는 다음의 문서와 정말 점점 어디서나.그것은 지역에서 작업하기 때문에 추가 COMMENTS_APP='comments_app'나 settings.py 는'의견에'응용 프로그램 사라져서 관리 인터페이스를 제공합니다.하려고 할 때과 코멘트를 작성하는 그 회사는 분야는 그 요청에 대한 귀하의 이메일 url 등입니다.

고 싶을 볼 수 있도록 모든 의견 관리자 패널에 회사와 함께 필드를 추가했습니다.

필요성 admin.py 또는 있게 됐다고 누락된 부분이 있나요?

여기에는 나의 코드가 내 의견 맞춤형 응용 프로그램:

//MODELS

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

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

//FORMS.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'로 위에서 언급된다.

도 나는 뭔가?

감사

도움이 되었습니까?

해결책

예,당신은 당신을 만들 필요가 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)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top