Django калькулятор дат
Это приложение должно принимать дату от пользователя, хранить ее в базе данных, затем отсчитывать 9 дней после нее и показывать эти 10 дней в списке, мне удалось сделать два представления одно для подсчета 10 дней и показа их в списке. Другое представление должно принимать день от пользователя и хранить его в базе данных, теперь я хочу соединить оба представления, чтобы в конце процесса пользователь выбирал дату, а приложение автоматически сохраняло дату, подсчитывало их и возвращало список.
Модели:
from django.db import models
from django.db.models.fields import DateField
from datetime import datetime
from django.db.models import CharField, Model
# Create your models here
class Event(models.Model):
title = models.CharField(max_length=40)
start = models.DateTimeField(auto_now=False, auto_now_add=False, null=True, blank=True)
end = models.DateTimeField(auto_now=False, auto_now_add=False, null=True, blank=True)
def __unicode__(self):
return self.title
class PeriodDate(models.Model):
per_date = models.CharField(max_length=15)
serializer:
from dataclasses import fields
from rest_framework import serializers
from .models import PeriodDate
class PeriodDateSerializer(serializers.ModelSerializer):
class Meta:
model = PeriodDate
fields = '__all__'
URLs:
from django.urls import path
from django.urls.resolvers import URLPattern
from . import views
urlpatterns = [
path('CalendarCount', views.CalendarCount, name= 'index' ),
path('form', views.form),
]
Просмотров:
@api_view(['GET'])
def CalendarCount(request):
#Taking date
Slected_date = PeriodDate.objects.all()
#Change data type from Str into Date
First_date= datetime.strptime(Slected_date,'%Y-%m-%d')
#Making a list to store dates after the for loop
dd = []
#A loop to count 9 days after the First_date
for i in range(9):
a_date = (First_date + timedelta(days = i))
#changing Date form to show the day only
a_date = a_date.strftime('%d')
#store results into the dd list
dd.append(a_date)
#str(dd.append(d1 + timedelta(days=i)))
return Response(dd)
@api_view(['POST'])
def form(request):
serlializer = PeriodDateSerializer(data=request.data)
if serlializer.is_valid():
serlializer.save()
return Response(serlializer.data)