Каков наилучший (= самый простой) способ заполнения поля django-text значениями из других моделей в интерфейсе администратора? - PullRequest
0 голосов
/ 13 июня 2011

Я работаю над небольшим новостным приложением для проекта Blog-Django (только для меня).Одной из главных особенностей проекта является определенный набор типов статей.Все типы Article являются потомками абстрактного базового класса «Article».Двумя примерами типов статей являются «event-article» и «video-article».В приложении рассылки у меня есть поле «content» (= email-message).Теперь я хочу выбрать несколько статей (любого типа) для включения в информационный бюллетень.Может быть проще, если я просто создаю функцию, которая ищет все статьи, которые еще не представлены в бюллетене.Затем я собираю всю необходимую информацию, объединяю их в текст и устанавливаю функцию по умолчанию для поля.Но я предпочитаю выбирать статьи самостоятельно.Я подумал о m2m-поле, но как я могу выбрать некоторые статьи (встроенные в форму редактирования объекта) и заполнить поле содержимого необходимой информацией (например, absolute_url или заголовок) сразу?Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 13 июня 2011

Только опция 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'])
});

Вам, очевидно, придется немного подправить это, но это основной процесс.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...