- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们如何使用 通用 View 和 django-mptt 实现 CRUD 功能?我搜索了很多,找不到一个教程/示例代码。
假设我们有一个类(class)层次结构或类别层次结构,或类似的东西......我们如何添加/删除/更新/读取它们??
例如我有这个模型:
from django.db import models
from mptt.models import MPTTModel , TreeForeignKey
class Genre(MPTTModel):
name = models.CharField(max_length = 50 , unique = True)
parent = TreeForeignKey('self' , null = True , blank = True , related_name = 'children')
class MPTTMeta:
order_insertion_by = ['name']
这个views.py:
from django.views.generic.list_detail import object_list
from mp.models import Genre
def genres_list(request):
''' Shows all of the genres '''
return object_list(request,
queryset = Genre.tree.all() ,
template_name = 'genres.html' ,
# template_object_name = 'nodes' ## Adding "nodes" variable didn't solve the problem
)
好吧...我收到此错误(错误在行号“5”中:{% recursettree nodes %}):
Caught VariableDoesNotExist while rendering: Failed lookup for key [nodes] in u"[{'paginator': None, 'is_paginated': False, 'page_obj': None, 'nodes_list': [<Genre: Genre object>, <Genre: Genre object>, <Genre: Genre object>, <Genre: Genre object>]}, {'csrf_token': <django.utils.functional.__proxy__ object at 0x7f5bb810f090>}, {'perms': <django.utils.functional.__proxy__ object at 0x7f5bb810ff10>, 'messages': <django.contrib.messages.storage.user_messages.LegacyFallbackStorage object at 0x324af50>, 'user': ....................................
<html>
2
3 {% load mptt_tags %}
4 <ul>
5 {% recursetree nodes %}
6 <li>
7 {{node.name}}
最佳答案
具有 MPTT 模型和基于类的通用 View 的简单 CRUD 应用程序 (Django 1.4 The function-based implementation has been deprecated )。
开始吧
urls.py
from django.conf.urls.defaults import patterns, include, url
from django.views.generic import DetailView, ListView, CreateView, UpdateView
from genre.models import Genre
urlpatterns = patterns('',
url(r'detail/(?P<pk>\d+)', DetailView.as_view(model=Genre), name="genre_detail",),
url(r'update/(?P<pk>\d+)', UpdateView.as_view(model=Genre), name="genre_update",),
url(r'create', CreateView.as_view(model=Genre), name="genre_create",),
url(r'list', ListView.as_view(model=Genre), name="genre_list",),
)
models.py
from django.core.urlresolvers import reverse
from django.db import models
from mptt.models import MPTTModel
class Genre(MPTTModel):
name = models.CharField(max_length=50 , unique=True)
parent = models.ForeignKey('self' , null=True , blank=True , related_name='children')
def get_absolute_url(self):
return reverse('genre_detail', kwargs={'pk': self.pk, })
class MPTTMeta:
order_insertion_by = ['name']
templates/genre_detail.html
<html>
<body>
<div>Object: {{ object }}</div>
<div>Object's name: {{ object.name }}</div>
<div>Object's parent: {{ object.parent }}</div>
</body>
</html>
templates/genre_form.html
<html>
<body>
<form action="" method="post">
{% csrf_token %}
{{ form.as_ul }}
<button>save</button>
</form>
</body>
</html>
templates/genre_list.html
{% load mptt_tags %}
<html>
<body>
<ul class="root">
{% recursetree object_list %}
<li>
{{ node.name }}
{% if not node.is_leaf_node %}
<ul class="children">
{{ children }}
</ul>
{% endif %}
</li>
{% endrecursetree %}
</ul>
</body>
</html>
就是这样。
今天有空,在github上分享了这个项目https://github.com/kaygorodov/simple-crud-mptt .
如何定义自己的基于类的 View ?
genre/views.py
from django.view.generic import UpdateView
class MyCustomUpdateView(UpdateView):
model = Genre
def get_form_kwargs(self):
"""
Returns the keyword arguments for instanciating the form.
"""
kwargs = super(MyCustomUpdateView, self).get_form_kwargs()
kwargs.update({'my_first_param_to_init_form': 1,
'my_second_param_to_init_form': 2,
})
return kwargs
流派/urls.py
url(r'update/(?P<pk>\d+)', MyCustomUpdateView.as_view(), name="genre_update",),
关于Django,如何用 django-mptt 做 CRUD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11508088/
我已经成功完成了 django-mptt 教程。我无法弄清楚如何做的是创建一个 child 的 child 。 child 的 child ,我的意思是更深的第三级。看下面的例子,我想创建 1.3.1
我想要一棵树来模仿带有文件夹和文件的文件系统。文件夹和文件将由具有不同字段属性的不同模型定义。 楷模: from mptt.models import MPTTModel, TreeForeignKe
在网上商店中,我使用 django-mptt 来处理多个级别的产品类别。我也有各自属于一个类别的产品。 现在我想像这样可视化类别树: all(18) - edible (10) -- food (4)
我正在尝试使用django-mptt运气微乎其微。这是来自 svn 的最新 Python2.5、windows、sqlite3、Django 1.2pre、django-mptt。 代码: 型号: c
我在我的 Django 应用程序中使用 django-mptt 作为文章模型。如果我想获取所有设置为例如隐藏的文章,我可以这样做 Article.objects.filter(hidden=False
我只是使用改进的预序树遍历 (MPTT) 构建一个表来存储分层数据——你知道的:每个节点存储 left 和 right ID 以查找其后代。我使用的是 CakePHP 建议的模型,它与标准方式不同,每
题 给定下面的模型,我想获得所有页面的查询集,用与页面关联的线程中的评论总数进行注释,包括与页面关联的评论线程树中的所有评论。 我正在使用 django-mptt存储评论树。 我可以使用 commen
我尝试了一段时间在我的项目中设置 django-mptt。我从 tutorial 中取样并相应地更改了模型,如下所示: class Genre(MPTTModel): pk = models.Auto
几个星期以来,我一直在用头撞在 table 上解决这个问题,所以我认为可能是时候寻求一些帮助了。 我正在尝试实现一个数据库结构,它具有组件零件的分层数据。我的主要问题在于尝试将一个“子程序集”分配给另
我正在尝试将 mptt 库用于简单的嵌套评论系统。 我的模特 class Comment(MPTTModel): event = models.ForeignKey(Event) au
我是 Django 和 MPTT 的新手,很难弄清楚如何获取所有叶节点并将它们直接发送到 Form 类。 例如,我创建了 MPTT 类别模型,并具有如下层次结构: 类别1 类别2 类别3 类别4 类别
我在尝试让导入导出适用于 mptt 模型时遇到问题。这是我的代码: models.py from django.db import models from mptt.models import MPT
情况是这样的。我正在 Django 中利用 MPTT 模型来创建音乐流派的层次结构(摇滚、硬摇滚等)。我将此层次结构的节点之一分配给相册。假设我创建了一个具有硬摇滚风格的专辑对象。我如何查询我的专辑中
我正在尝试弄清楚如何编写返回多维数组的函数。我知道如何使用“category_parent”值编写函数。但我只是想编写一个函数,仅使用左右键即可创建多维数组。 array(71) { [0]=>
.move_to() 方法对我不起作用。我看过其他人建议保存实例以及重新加载节点实例的帖子。但这些解决方案都不适用于此测试用例。我也尝试过 ._tree_manager.rebuild(),它也不起作
情况是这样的。我正在 Django 中利用 MPTT 模型来创建音乐流派的层次结构(摇滚、硬摇滚等)。我将此层次结构的节点之一分配给相册。假设我创建了一个具有硬摇滚风格的专辑对象。我如何查询我的专辑中
我在模型中使用 mptt 来管理标记系统(每个标记都有一个可选的 TreeForeignKey 到“父”标记) 每当我需要保存标签模型时,以下查询运行得异常缓慢(超过 45 秒) UPDATE "t
因此,我使用 MySQL 并将基于嵌套集/修改后的预序树遍历模型的类别结构存储在表名“nested_category”中,该表具有以下字段:category_id,name,lft,rgt,publi
我有一个线程评论系统,在 99.9% 的时间里都可以正常工作,但偶尔树会崩溃,左/右值会重复。 我发现当两个帖子同时发生时(彼此相隔不到一秒)会发生这种情况,并且大概发生的情况是第二个帖子在第一个之前
我在我的 Django 项目中使用 MPTT 树结构来组织评论。我只有 2 个级别:评论和评论的评论除了排序之外,一切都完美无缺。 我想按创建日期上升(“-creation_date”)对所有没有父项
我是一名优秀的程序员,十分优秀!