Создание полей модели для отслеживания алигнера, которые автоматически заполняют другие поля по его общему количеству и времени ношения

Я пытаюсь создать сайт для отслеживания выравнивателя. В моем файле Model у меня есть length, aligner_number и time. Я хочу настроить его так, чтобы, допустим, длина (общее количество выравнивателей) была 10, тогда мое другое поле aligner_number будет генерировать 10 полей от 1 до 10, где каждый выравниватель, который пациент завершает, мы можем отметить один из aligner_numbers как завершенный, который также находится в классе Treatment. Кроме того, время - это количество времени, в течение которого пациент носит выравниватель, поэтому, допустим, его нужно менять каждые 2 недели. На основе данных length и treatment_number я хочу, чтобы автоматически генерировалось одинаковое количество полей для общего количества алигнеров с датой с разницей в 2 недели. Допустим, длина 10, а номер_выравнивателя имеет список номеров выравнивателей 1, 2, 3 и т.д. Я хочу, чтобы каждый номер_выравнивателя имел соответствующую дату_времени с разницей в 2 недели для доставки. Так, допустим, пациент начнет носить выравниватель 1 1 ноября, я хочу, чтобы он автоматически генерировал поля времени до 14 ноября для выравнивателя 2, 28 ноября для выравнивателя 3 и т.д., чтобы мы знали, что пациент должен начать носить выравниватель номер 3 28 ноября.

Файл модели

import datetime
from django.db import models
from django.utils import timezone
from django import forms
from django.urls import reverse




class Patient(models.Model):
doctor_name = models.CharField(max_length=200)
create_date = models.DateTimeField('date created')
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
birthday = models.DateField(blank=True, null=True)

def __str__(self):
    return f"{self.doctor_name},{self.first_name}, {self.last_name}, {self.birthday}" 
#or '%s %s %s %s %s' %b(self.doctor_name),(self.first_name), (self.last_name), 
(self.birthday)

def was_published_recently(self):
    return self.create_date >= timezone.now() - datetime.timedelta(days=1)
def get_absolute_url(self): # new
    return reverse('patientmanagement:patient_form')


class Treatment(models.Model):
patient = models.ForeignKey(Patient, on_delete=models.CASCADE)
length = models.IntegerField(default=0)
aligner_number = models.IntegerField(default=0)
completed = models.BooleanField(default=False)
time = models.Datefield(blank=True, null=True)
def __str__(self):
    return f"{self.length}, {self.aligner_number}, {self.aligner_number}" #or can use 
same format as showed above

Просмотр файла

Файл администратора

from django.contrib import admin
from .models import Patient, Treatment


admin.site.site_header = "Arlington Dental Center"
admin.site.site_title = "Arlington Dental Center"
admin.site.index_title = "Aligner Management"

class TreatmentInline(admin.TabularInline):
model = Treatment
fieldsets = [('Number of Aligners', {'fields': ['length']})]
#fieldsets = [('Aligner Number', {'fields': ['aligner_number']}),
          #  ('Completed', {'fields': ['completed']})]
extra = 0
class NewInline(admin.TabularInline):
model = Treatment
fieldsets = [('Aligner Number', {'fields': ['aligner_number']}),
           ('Completed', {'fields': ['completed']})]
extra = 1
class PatientAdmin(admin.ModelAdmin):
fieldsets = [(None, {'fields': ['doctor_name']}),
             ('Date Information', {'fields': ['create_date']}),
                ('First Name', {'fields': ['first_name']}), ('Last Name', {'fields': 
['last_name']}),
                ('Birthday', {'fields': ['birthday']}),]
inlines = [TreatmentInline, NewInline]


admin.site.register(Patient, PatientAdmin)

URL File

from django.urls import path, re_path
from . import views
from django.conf.urls import URL
from django.urls import include, path, re_path
from . import views
from .views import PatientCreate, TreatmentCreate


app_name= 'patientmanagement'

urlpatterns = [
path('index/', views.index, name='index'),
path('treatment_form', TreatmentCreate.as_view(), name='treatment_form'),
path('detail/<int:patient_id>/', views.detail, name='detail'),
path('detail/<int:treatment_id>/delete/', views.delete, name='delete'),
path('detail/<int:treatment_id>/delete/', views.delete, name='completed'),
path('detail/', views.detail, name='detail'),
url(r"^accounts/", include("django.contrib.auth.urls")),
path('accounts/', include("django.contrib.auth.urls")),
path('patient_form', PatientCreate.as_view(), name='patient_form'),
path('dashboard/', views.dashboard, name='dashboard'),
Вернуться на верх