Я пытаюсь создать общий шаблон редактора, который копирует Html.EditorForModel ()
, чтобы позже настроить и использовать . Шаблон Брэда Уилсона довольно близок, но я обнаружил, что он подавляется, когда один и тот же ключ существует как во ViewData (или ViewBag), так и в модели. Например, ViewBag.Title
вызывает проблемы, если модель представления также имеет свойство Title
.
Я узнал здесь , что с помощью помощников строгого типа (например, Я пытаюсь создать диалоговое окно, в котором используется функция jquery .load () для прихлебки в отображаемой форме django. Функция .load передается pk объекта "alert". В функциях класса также доступны такие вещи, как Создание подкласса CreateView от django делает его довольно привлекательным. легко создать контекст с помощью экземпляра ModelForm (views.py): Проблема в том, что Html.EditorFor (x => x.Title)
вместо Html.Editor ("
self.request.user
, поэтому я могу предварительно заполнить эти поля, показанные ниже в модели сообщения (models.py): class Message(models.Model):
user = models.ForeignKey(User)
alert = models.ForeignKey(Alert)
date = models.DateTimeField()
message = models.TextField()
class MessageDialogView(CreateView):
""" show html form fragment """
model = Message
template_name = "message.html"
def get_initial(self):
super(MessageDialogView, self).get_initial()
alert = Alert.objects.get(pk=self.request.POST.get("alert_id"))
user = self.request.user
self.initial = {"alert":alert.id, "user":user.id, "message":"test"}
return self.initial
def post(self, request, *args, **kwargs):
super(MessageDialogView, self).post(request, *args, **kwargs)
form_class = self.get_form_class()
form = self.get_form(form_class)
context = self.get_context_data(form=form)
return self.render_to_response(context)
self.initial
не отображается с формой. Я застрахован, что форма действительно вызывает get_initial
, а экземпляр формы имеет правильные начальные данные в сообщении
, но когда форма отображается в шаблоне message.html
это не так t захватить любые исходные данные, как я ожидал. Есть ли особый трюк, чтобы заставить это работать? Я просмотрел документы (похоже, не хватает примеров для общих представлений классов) и исходный код, но я не вижу, что мне не хватает.