![](/img/trans.png)
[英]TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.timedelta'
[英]Django, Python unsupported operand type(s) for +: 'datetime.time' and 'datetime.timedelta'
我正在 Django 中创建约会应用程序,其中
the end time of the appointment = the start_time + 30 min
但我收到此错误我在stackoverflow中尝试了一些解决方案,但对我没有任何作用
这是我的 forms.py
class AppointmentForm(forms.ModelForm):
doctor = forms.ModelChoiceField(queryset=User.objects.filter(type_of_user=TypeOfUser.DOCTOR))
date = forms.DateField(widget=forms.DateInput(attrs={'type': 'date'}), input_formats=settings.DATE_INPUT_FORMATS)
start_time = forms.TimeField(widget=forms.DateInput(attrs={'type': 'time'}))
class Meta:
model = Appointment
fields = ('doctor', 'date', 'start_time',)
这是views.py
from datetime import timedelta
import datetime as dt
@login_required
def create_appointement(request):
user = User()
if request.user.is_patient():
form_appointement = AppointmentForm(request.POST or None)
if request.method=='POST':
form_appointement = AppointmentForm(request.POST or None)
if form_appointement.is_valid():
form_app = form_appointement.save(commit=False)
form_app.user_ho_add = request.user
form_app.end_time = form_app.start_time + dt.timedelta(minutes=30) ###
form_app.save()
messages.success(request, 'appointment added')
else:
messages.error(request, 'Error')
return render(request,'appointement/add_appointement1.html',{'form':form_appointement})
我的模型.py
def defaultTitle():
id=''
try:
id = str(Appointment.objects.order_by('-id').first().id + 1)
except:
id = '1'
return 'patient ' + id
class Appointment(models.Model):
user_ho_add = models.ForeignKey(User, on_delete=models.CASCADE, related_name='user_ho_add_appointment')
patient = models.CharField(null=True,max_length = 200, default=defaultTitle)
doctor = models.ForeignKey(User, on_delete=models.CASCADE, related_name='doctor_app')
date = models.DateField(null=False, blank=False, default=timezone.now)
start_time = models.TimeField(null=True, blank=True, default=timezone.now)
end_time = models.TimeField(null=True, blank=True, default=timezone.now)
所以问题在线
form_app.end_time = form_app.start_time + dt.timedelta(minutes=30)
您正在尝试在 datetime.time 实例而不是 datetime.datetime 实例中添加时间。
根据您的问题,我们无法直接更新时间,但我们可以这样做
.
.
start_time = form_app.start_time
future_time = dt.datetime(1970, 1, 1, start_time.hour, start_time.minute, start_time.second, start_time.microsecond) + timedelta(minutes=30)
form_app.end_time = dt.time(future_time.hour, future_time.minute, future_time.second, future_time.microsecond)
.
.
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.