Ошибка типа: неподдерживаемые типы операндов для -: 'DateTimeField' и 'DateTimeField' - PullRequest
0 голосов
/ 05 февраля 2019

У меня есть следующее уравнение в классе Django 2.1:

import datetime
class FormBacktest(forms.Form):
     dateStart= forms.DateTimeField(label="Date Start", widget=DateTimePickerInput()
    dateEnd= forms.DateTimeField(label="Date End", widget=DateTimePickerInput()
    timeInMin = int((dateEnd-dateStart).total_seconds()/60)

Я знаю из документации , что DateTimeField является экземпляром datetime.datetime, поэтому этот вопрос следует преодолеть.

Есть рекомендации?

Ответы [ 2 ]

0 голосов
/ 05 февраля 2019

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

Если вы хотите отобразить timeInMin в форме, вам нужно сделать его полем Integer (вероятно, будет маленьким), а затем использовать javascript для вычисления и обновления поля, когда пользователь вводитдата начала и окончания.

Если вы хотите установить timeInMin при отправке в базу данных для экземпляра модели, и вам не нужно обновлять значение с помощью Javascript в форме при его обновлении, тогда вы просто сделаете этов представлении обработчика формы или даже путем переопределения метода сохранения модели.

С тем, что у вас есть сейчас, DateEnd не создается при попытке обратиться к нему, а DateEnd isn 'В любом случае, это значение поля формы.

0 голосов
/ 05 февраля 2019

Ну, DateTimeField - это поле формы, а не datetime экземпляр.Однако когда вы берете данные из этого поля, вы получаете объект datetime.Вы можете получить доступ к его значению из cleaned_data, например, так:

# in view

def someview(request):
   form = FormBacktest(request.POST or None)
   if request.method == "POST": # its a post request
       if form.is_valid():
           date_start = form.cleaned_data.get('dateStart')
           date_end = form.cleaned_data.get('dateEnd')
           difference= date_end - date_start  # time delta object

Пожалуйста, ознакомьтесь с документацией , чтобы узнать больше о том, как получить данные из формы.Также, пожалуйста, удалите timeInMin из формы.

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