Django Initial Usage для получения последнего идентификатора для вывода на форму

Я хочу сделать форму регистрации пациентов и хочу, чтобы каждый новый пациент начинал с начального номера. Вот моя форма. Я сделал эти коды views.py, но на экране ничего нет. Как я могу это исправить. И затем моя настоящая цель - начать регистрацию пациента с идентификатором по умолчанию=0, а затем каждый новый пациент должен иметь +1 дополнительный идентификатор. Как я могу это сделать. Спасибо за помощь.

enter image description here

Вот мои коды.

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

Вернуться на верх