从香草夹层应用程序开始,我似乎无法为博客文章模型添加标题。
参考网址说明:http://mezzanine.jupo.org/docs/model-customization.html
在settings.py中:
EXTRA_MODEL_FIELDS = (
(
"mezzanine.pages.models.BlogPost.caption",
"CharField",
("Caption",),
{"blank": True, 'max_length': 150},
),
)
从这一点开始,运行 python ./manage.py makemigrations
返回未检测到任何更改
所以,我决定尝试在Django中创建一个名为UpdateBlogPost的应用程序
from django.db import models
from mezzanine.blog.models import BlogPost
class BlogPost(BlogPost):
caption = models.CharField("Caption", max_length=200)
tags = models.CharField("Tags", max_length=100)
featured_position = models.IntegerField("Featured Position", default=0, null=True)
在上面运行makemigrations会产生迁移,但也许有经验的Django开发人员已经意识到它会生成OneToOneField迁移,以将UpdateBlogPost.BlogPost与Mezzanine模型联系起来。
更广泛,更有用的问题是:如何在我自己的django应用程序中修改/扩展第三方库中的模型?此外,在上述成功之后,下面的代码应该去哪里?它目前位于我的UpdateBlogPost应用程序的admin.py。
中from copy import deepcopy
from django.contrib import admin
from mezzanine.blog.admin import BlogPostAdmin
from mezzanine.blog.models import BlogPost
blog_fieldsets = deepcopy(BlogPostAdmin.fieldsets)
blog_fieldsets[0][1]["fields"].insert(1, "caption")
class MyBlogPostAdmin(BlogPostAdmin):
fieldsets = blog_fieldsets
admin.site.unregister(BlogPost)
admin.site.register(BlogPost, MyBlogPostAdmin)
非常感谢帮助!
答案 0 :(得分:2)
如果有人遇到类似问题,
EXTRA_MODEL_FIELDS = (
(
"mezzanine.pages.models.BlogPost.caption",
"CharField",
("Caption",),
{"blank": True, 'max_length': 150},
),
)
是错误的,应该是
EXTRA_MODEL_FIELDS = (
(
"mezzanine.blog.models.BlogPost.caption",
"django.db.models.CharField",
("Caption",),
{"default": 'Some String', 'max_length': 150},
),
)
从那里运行 makemigrations 会按预期生成它。