什么是最好的(=最简单)的方式来填充django文本字段与管理界面中的其他模型的值?

什么是最好的(=最简单)的方式来填充django文本字段与管理界面中的其他模型的值?

问题描述:

我正在为一个自定义博客Django项目的小通讯应用程序(只为我)。该项目的一个主要特点是定义的一组文章类型。所有文章类型都是抽象基类“文章”的子代。文章类型的两个例子是“事件文章”和“视频文章”。在通讯应用程序中,我有一个“内容”字段(=电子邮件消息)。现在,我想选择几篇(任何类型的)文章加入新闻通讯。如果我只是创建一个功能来搜索所有尚未在新闻中发布的文章,这可能会更容易。然后我会收集所有需要的信息,将它们组合成一个文本并将该功能设置为该字段的默认值。但我宁愿自己选择文章。我想过一个m2m字段,但是如何才能选择一些文章(以对象的编辑形式内联),并立即将内容字段填充所需的信息(如absolute_url或标题)?感谢您的帮助提前。什么是最好的(=最简单)的方式来填充django文本字段与管理界面中的其他模型的值?

只有选项是AJAX。设置一个将文章作为JSON返回的视图。用户选择文章时,对该视图进行AJAX调用。然后,解析返回的JSON并用JavaScript填充文本字段。

views.py

from django.core import serializers 
from django.http import HttpResponse 

def json_get_article(request, article_id): 
    article = get_object_or_404(MyModel, id=article_id) 
    data = serializers.serialize("json", article) 
    return HttpResponse(data, mimetype='application/json') 

的script.js(使用jQuery为简单起见)

$.getJSON('/my/ajax/url/', function (data, textStatus, jqXHR) { 
    $('#id_my_text_field').val(data[0]['field_containing_text']) 
}); 

你显然需要调整的是有点,但是这是基本的过程。

+0

好的,谢谢!这是我最担心的答案;-)学习一些jQuery/Ajax的时间...... – 2011-06-14 18:58:32

+0

这真的没有那么糟糕,并且使用像jQuery这样的东西使得它更容易。上述三行jQuery代码在纯JavaScript中替换为20。而且,上面的python方法实际上是所有你必须使用的(只有轻微的变化)为任何视图返回JSON。 – 2011-06-15 14:19:17

+0

现在我学习了你的例子,至少我学到了基本的东西(包括萤火虫基础知识......)。无论如何,我可以将它用于前端。正如预期的那样出现了新的问题,但我可能会为他们创造新的问题......所以再次感谢。 – 2011-06-17 05:37:36