0

私は学習目的でメザニンで小さなブログを作成しており、「mezzanine.pages.models.Page」をサブクラス化してこのモデルを管理者に登録することにより、カスタムコンテンツタイプを追加したいと考えています。私のクラスは次のようになります。

models.py:

from django.db import models
from mezzanine.pages.models import Page

class Student(Page):
    dob = models.DateField("Date of birth")
    name = models.CharField("Name", max_length=30)
    gender = models.CharField("Gender", max_length = 5, choices=(('M','Male'),           
                                              ('F','Female')), default = 'M')
    image = models.ImageField(upload_to='Students')

class Project(models.Model):
    student = models.ForeignKey("Student")
    project_image = models.ImageField(upload_to="StudentProjects")

admin.py:

from copy import deepcopy
from django.contrib import admin
from mezzanine.pages.admin import PageAdmin
from .models import Student, Project

student_extra_fieldsets = ((None, {"fields": ("dob","name","gender","image")}),)

class ProjectInline(admin.TabularInline):
    model = Project

class StudentAdmin(PageAdmin):
    inlines = (ProjectInline,)
    fieldsets = deepcopy(PageAdmin.fieldsets) + student_extra_fieldsets

admin.site.register(Student, StudentAdmin)

ここで、「http:// localhost:8000 / admin / pages / page /」にアクセスして新しく登録したコンテンツタイプを追加すると、名前のない空のオプションが表示されますが、選択すると、カスタムコンテンツタイプ「Student」が表示されます。 "追加および編集するページ。

DjangoとMezzanineを使い始めたばかりなので、簡単に理解することはできません。

バックエンドとして「sqlite 」を使用しており、「 South」は使用していません

これへのポインタはありますか?

あなたの助けに感謝します:)

4

1 に答える 1

0

models.py の " *name = models.CharField("Name", max_length=30)* "を削除し、次のように置き換えました。

first_name = models.CharField("First Name", max_length=30)
last_name = models.CharField("Last Name", max_length=30)

そして今、すべてがOKのようです!!. (「南」を使用した場合のみ

于 2012-08-25T13:09:19.590 に答える