Как создать объект формы из 2 различных объектов модели в Django? - PullRequest
2 голосов
/ 13 декабря 2008

У меня есть 2 объекта, оба из разных классов Model, и я хочу показать форму, содержащую несколько полей из каждого. Как я могу это сделать?

Ответы [ 3 ]

5 голосов
/ 13 декабря 2008

Я делаю это путем создания двух ModelForm классов, которые используют мета-атрибут fields, чтобы указать, какое подмножество полей использовать для отображения в форме. Я отображаю обе формы в шаблоне и обрабатываю их в представлении.

0 голосов
/ 15 декабря 2008

Просто создайте 2 отдельные формы, проблема с подходом парня выше заключается в том, что вы потеряете .save (). Формы действительно предназначены для представления одного единого набора данных, данные для каждой из ваших моделей на самом деле являются отдельным набором данных. Вот почему формы не включают тег при визуализации.

0 голосов
/ 13 декабря 2008

Я никогда не пробовал этого, но вы могли бы иметь два класса ModelForm, определенных в вашем коде, а затем создать новый простой класс Form, который в своем __init__ создал копию каждого ModelForm и скопировал поля в себя .

Что-то вроде:

class DualForm(forms.Form):
    def __init__(self, *args, **kwargs):
        model1 = Model1Form(**kwargs)
        model2 = Model2Form(**kwargs)

        for f in model1.fields:
            self.fields[f] = model1.fields[f]

        for f in model2.fields:
            self.fields[f] = model2.fields[f]

class Model1Form(forms.ModelForm):
    ... your model form...

class Model2Form(forms.ModelForm):
    ... your other model form...

Не понимаю, почему это не сработает.

Просто убедитесь, что вы передаете аргументы данных в ModelForms и исключаете ловушки и всплывающие сообщения ... Я также не уверен, что произойдет, если у вас есть конфликтующие имена полей. Это может быть хлопотно ...

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