Создание полей модели для отслеживания алигнера, которые автоматически заполняют другие поля по его общему количеству и времени ношения
Я пытаюсь создать сайт для отслеживания выравнивателя. В моем файле 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'),