在Django项目中,我有一个使用MPTT的层次模型,在models.py中定义如下:
class Structure(MPTTModel):
name = models.CharField(max_length=200, unique=True)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
[...]
Run Code Online (Sandbox Code Playgroud)
我正在使用FeinCMS在管理页面中显示此分层数据.我在admin.py中这样做:
class StructureAdmin(tree_editor.TreeEditor):
search_fields = ('name',)
[...]
admin.site.register(Structure, StructureAdmin)
Run Code Online (Sandbox Code Playgroud)
在管理模型页面中,它完美地工作,可以看到层次结构:

它在编辑或添加时也有效:

我在models.py中有另一个模型:
class Track(models.Model):
initialStructure = models.ForeignKey(Structure , related_name='track_initialStructure')
finalStructure = models.ForeignKey(Structure, related_name='track_finalStructure')
[...]
Run Code Online (Sandbox Code Playgroud)
但是,在添加此类新元素时,无法看到层次结构:

我曾尝试使用tree_editor.TreeEditor作为Track的管理视图,但它会产生很多错误,因为Track不是分层的,但是它的一些ForeignKey是.在编辑模型轨道的元素时,如何显示层次结构?
非常感谢你.
我正在项目中使用Django和FeinCMS.我目前正在为网站上的所有页面使用FeinCMS.但我也有另一个单独的模型,可以处理网站非常简单的库存.这个库存模型有通常的字段(名称,描述等),但我也希望它有照片.
因为FeinCMS已经有了媒体库,所以我想在技术上使用它来将照片与我的库存模型一起使用.我通常可以做一个Photo模型和ManyToManyField,但我很想知道我是否可以使用FeinCMS媒体库的ManyToManyField?
我知道FeinCMS你可以在任何其他模型上使用项目编辑器,但我不确定这是正确的方法.如果这是唯一的方法,那就必须如此.
非常感谢
python django django-admin content-management-system feincms
我试图找到一种方法来过滤基于用户提供的页面对象的管理查询集,我考虑过(伪代码):
from feincms... Page
class MyPageAdmin(PageAdmin):
def __init__(self, *args, **kwargs):
'monkey business'
super(MyPageAdmin, self).__init__(*args, **kwargs)
admin.site.unregister(Page)
admin.site.register(Page, MyPageAdmin)
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为feincms检查完全加载的django实例.一个详细的解决方案可能根本不是加载页面模块,而是覆盖页面模型对象或管理员,例如:
from feincms... PageAdmin
class MyPage(Page):
objects = CustomManager()
admin.site.register(MyPage, PageAdmin)
Run Code Online (Sandbox Code Playgroud)
文档说明可以以类似的方式设置您自己的页面模块,但是对于简单的要求似乎有很多配置.
是否有更简单的方法来覆盖feincms模块的管理查询集或模型管理员?
是否有标准的解决方案将feincms MediaFile插入RichTextContent表单元素(ckeditor或tinyMCE)?我无法在文档中找到任何内容......现在用户需要在medialib中复制粘贴网址,然后转到页面并粘贴...
我在django项目中使用feincms并且我想使用manage.py dumpdata但我什么都没得到:
python manage.py dumpdata feincms
[]
Run Code Online (Sandbox Code Playgroud) 我有一个问题,我想知道我是否可以将2个现有的contenTypes混合成一个自定义的contenType.我需要使用contenType RichTextContent和ImageContent自己的内容类型,以便我可以使用特殊模板向右显示图像和向左显示文本.
这可能吗 ?.
我让内容类型继承RichTextContent并添加一些字段,如标题.
class SimpleTextContent(RichTextContent):
title = models.CharField(max_length=20)
...
Run Code Online (Sandbox Code Playgroud)
遗憾的是,在页面管理中,文本字段将显示在相应的内联管理员的顶部.但是首先出现会更好title.
如何更改内容类型的内联管理员中字段的顺序?
我正在尝试制作使用 django-mptt 管理的 FeinCMS 页面树的副本。我写了这个函数:
def make_tree_copy(page, parent=None):
'''
Makes a copy of the tree starting at "page", reparenting it to "parent"
'''
new_page = Page.objects.create_copy(page)
new_page.save()
Page.tree.move_node(new_page, parent)
# re-read so django-mptt fields get updated
new_page = Page.objects.get(id=new_page.id)
for child in page.get_children():
# re-read so django-mptt fields get updated
child = Page.objects.get(id=child.id)
make_tree_copy(child, new_page)
Run Code Online (Sandbox Code Playgroud)
并调用它使用
make_tree_copy(Page.tree.root_nodes()[0])
Run Code Online (Sandbox Code Playgroud)
它一般有效,但是当我有一个看起来像这样的页面树时:
A
|- B
|- C
|- D
Run Code Online (Sandbox Code Playgroud)
它出来是这样的:
A
|- B
|- D
|- C
Run Code Online (Sandbox Code Playgroud)
从我逐步完成 mptt 代码来看,神奇似乎发生在 mptt/managers.py/_inter_tree_move_and_close_gap() 中,由于某种原因,孙子的“lft”值发生了变化。在移动之前它们是 C=3,D=5,之后它们是 C=5,D=3。 …
feincms ×8
django ×7
django-admin ×3
python ×3
django-mptt ×2
ckeditor ×1
django-forms ×1
django-views ×1
mptt ×1
tinymce ×1