Django несколько ModelForms из одной модели - PullRequest
0 голосов
/ 29 октября 2019

Мне нужно реализовать транзакцию с пошаговым процессом, в котором пользователь может ввести детали на шаге 1, а затем обработать введенные данные, которые будут выполнять некоторые вычисления. Затем пользователь может перейти к шагу 2, который отображает первоначальный результат, и он / она может ввести дополнительные параметры для управления результатами. Мне нужно хранить все пользовательские входные данные в одной модели, так что если пользователь отменяет процесс, все данные, которые были первоначально сохранены, будут удалены.

Я новичок в django и python, так что если кто-то знает, как решитьэту проблему я бы очень оценил.

Это то, что я пробовал до сих пор:

В моих models.py у меня есть:

class Calculate(models.Model):
    date_created = models.DateField(auto_now_add=True)
    user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    csv = models.FileField(upload_to='files/')

    CHOICES = (
       ('none', '(none)'),
       ('c1', 'C-1'),
       ('c2', 'C-2'),
       ('c3', 'C-3'),
    )

    param1 = models.CharField(max_length=1, choices=CHOICES, blank=False, default='c1')
    param2 = models.CharField(max_length=1, choices=CHOICES, blank=False, default='c2')
    param3 = models.CharField(max_length=1, choices=CHOICES, blank=False, default='none')

В моем forms.py У меня есть:

class DetailsInputForm(forms.ModelForm):
    class Meta:
        model = Analysis
        fields = ('date_created', 'csv',)

class ParamInputForm(forms.ModelForm):
    class Meta:
        model = Analysis
        fields = ('param1', 'param2', 'param3',)

В моем views.py У меня есть:

 class DetailsInputView(LoginRequiredMixin, CreateView):
     model = Calculate
     form_class = DetailsInputForm
     template_name = 'step1.html'
     login_url = 'login'
     success_url = reverse_lazy('step2')

 class ParamInputView(LoginRequiredMixin, CreateView):
     model = Calculate
     form_class = ParamsInputForm
     template_name = 'step2.html'
     login_url = 'login'

Вмой шаблон HTML у меня есть:

 <div class="tab-pane">
      {% block step1 %}
      # block in step1.html
      {% endblock %}
 </div>
 <div class="tab-pane">
      {% block step2 %}
      # block in step2.html
      {% endblock %}
 </div>

Когда я запускаю свой код, я получаю ошибку программирования, говорящую, что столбец db param1, param2 и param3 не существует. Я подозреваю, что это потому, что строка в моей базе данных является неполной из-за различных модельных форм, которые я использовал.

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

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