Django Initial Usage для получения последнего идентификатора для вывода на форму
Я хочу сделать форму регистрации пациентов и хочу, чтобы каждый новый пациент начинал с начального номера. Вот моя форма. Я сделал эти коды views.py, но на экране ничего нет. Как я могу это исправить. И затем моя настоящая цель - начать регистрацию пациента с идентификатором по умолчанию=0, а затем каждый новый пациент должен иметь +1 дополнительный идентификатор. Как я могу это сделать. Спасибо за помощь.
Вот мои коды.
Models.py
class Patient(models.Model):
GENDER_CHOICES = (
("M", "Male"),
("F", "Female"),
("O", "Other")
)
""" aadhaarId = models.AutoField(primary_key=True ) """
aadhaarId = models.CharField(primary_key=True, max_length=6, help_text= "12 digit aadhar no" )
name = models.CharField(max_length=20)
date_of_birth = models.DateField(max_length=8, help_text="YYYY-MM-DD")
gender = models.CharField(choices=GENDER_CHOICES, max_length=1)
# Patients will be sorted using this field
last_updated_on = models.DateTimeField(auto_now=True)
class Meta:
verbose_name = "patient"
verbose_name_plural = "patients"
ordering = ["-last_updated_on"]
def __str__(self):
return self.name + '-' + self.aadhaarId
views.py
@login_required()
def patientCreate(request):
if request.method == "POST":
intaial_data = {
'aadhaarId': '999088'}
form = PatientForm(request.POST, initial=intaial_data)
id = request.POST['aadhaarId']
if form.is_valid():
try:
form.save()
messages.success(request, 'New Patient is successfully added.!')
model = form.instance
return redirect('/patient-detail/{}'.format(id))
except:
messages.error(request, 'failed to add patient')
else:
form = PatientForm()
return render(
request, 'patient_records/patient-create.html', {'form': form}
)
Вы можете создать функцию, которая дает количество пациентов в таблице и использовать ее как ссылку для генерации новых Id
Против :
Базы данных sql используют инкрементный подход, поэтому. Если в таблице 10 пользователей с id от 0 до 9 и один пользователь с id 4 ушел, то новый пользователь не будет занимать место 4, а вместо этого будет создан новый id с id 10, поэтому для этого сценария вы получите дубликаты id, чтобы решить эту проблему, вы можете следовать приведенному ниже алгоритму.
Хотя вы можете преодолеть эту проблему с помощью
Вы можете получить последнее автоматически сгенерированное значение AUTO_INCREMENT с помощью SQL-функции LAST_INSERT_ID() или функции API mysql_insert_id(). Эти функции специфичны для конкретного соединения, поэтому их возвращаемые значения не зависят от другого соединения, которое также выполняет вставки.См. Get Last Used Id