2014-08-28 127 views
0

我想弄清楚如何做一个用户生成对象的内联编辑,粗略的程序(没有代码只是步骤),以及是否有某种方式来做到这一点没有AJAX - 当然它不会“内联”了。Django编辑用户生成的对象

说用户对象只是1行文本和1图像。类似的,

class UserObject(models.Model): 
    text = models.CharField() 
    image_path = models.CharField() 

如果我要使用AJAX,会这样吗? (抱歉,这是模糊的,我可以找出细节只是想看看我是否正确理解概念)

  1. 创建形式,属于当前用户
  2. 接下来的对象的实例来填充它在图片中,我会说有一个“删除”按钮,它会触发一个类似于project/remove/ab12345的URL的AJAX调用,该URL连接到处理它的视图。
  3. 等待AJAX​​调用来完成
  4. 然后不知何故只删除div包含所有

去除图像和按钮,也许是这样吗?

另外,如果我不想使用AJAX呢?会不会像这样?

  1. 创建形式,属于当前用户
  2. 旁边的图像对象的实例来填充它,我倒是有,比方说,一个“删除”按钮,它直接链接到网址这就像project/remove/ab12345,它连接到一个处理它的视图
  3. 视图删除图像后,它返回到编辑页面,只是刷新和图像不再存在。

任何指针将不胜感激!!我可以弄清楚编码的细节,只是想知道我是否正确地理解了这些概念。

回答

0

确定,因为我发布了这个超模糊的问题,我将回答它。

无AJAX: AJAX免费版与我描述的非常相似,创建一个视图和一个URL,删除图像并返回到引用页面。接下来要尝试AJAX版本,它基本上需要一个返回某种失败或成功信号的视图。

urls.py

url('^project/remove_image/(?P<image_id_string>[0-9A-Fa-f]+)/$', pbrand.views.ProjectRemoveImageView.as_view(), name='project_remove_image'), 

意见。PY

class ProjectRemoveImageView(View): 
    redirect_url = '/project/edit' # the editing url 

    def get(self, request, image_id_string, *args, **kwargs): 
     # ... some checks on permissions    
     image.delete() 
     return HttpResponseRedirect(self.redirect_url + "/" + project.id_string) 

在模板中

<a class = "btn btn-default btn-sm" href="{% url 'project_remove_image' i.id_string %}" role="button">remove</a> 
0

用户创建的对象与您自己创建的对象确实没有什么不同(除非您必须怀疑潜在的恶意输入!)。能够在管理界面外编辑对象的最简单方法是使用内置的UpdateView。同样,你可以用DeleteView删除它们。如果你想限制你可以编辑对象,你可以从django braces用户PermissionRequiredMixin

+0

这不是我问的,但实际上我只责怪自己张贴的超含糊不清的问题=) – reedvoid 2014-08-30 15:11:33