Создание целочисленного поля с автоматическим увеличением в django

Я хочу создать целочисленное поле с автоинкрементом. Я хочу создать ID для каждого пользователя. Я новичок и, пожалуйста, объясните полностью и ясно :) Я хочу автоматически присваивать ID каждому пользователю.

моя модель:

from django.db import models
class User_account(models.Model):
    email = models.EmailField()
    fullname = models.CharField(max_length=30)
    username = models.CharField(max_length=20)
    password = models.CharField(max_length=30)
    marital_status = models.BooleanField(default=False)
    bio = models.CharField(default='' ,max_length=200)


def __str__(self):
    return f"(@{self.username}) {self.fullname}"

def save(self, *args, **kwargs):
    self.username = self.username.lower()
    self.email = self.email.lower()
    return super(User_account, self).save(*args, **kwargs)

Мой взгляд:

from django.shortcuts import render
from .models import User_account

def profile(request, username):
    users = User_account.objects.all()
    for user in users:
        if username == user.username:
            return render(request, 'account_app/profile.html', context={"user_info":user})

def users_list(request):
    users = User_account.objects.all()
    return render(request, 'account_app/users_list.html', context={"user_info":users})

Вы не указали поле с помощью primary_key=True [Django-doc], это означает, что Django будет автоматически добавлять поле к вашей модели с именем id.

If you do not change the DEFAULT_AUTO_FIELD setting [Django-doc], or set the default_auto_field attribute [Django-doc] of the AppConfig of your app, it will use an AutoField [Django-doc] which is an IntegerField that will automatically add a value. You thus can access this with myuser.id or myuser.pk.

Пожалуйста, неиспользуйте циклы для фильтрации на username, это приведет к линейному поиску в слое Django/Python. Лучше фильтровать базу данных с помощью:

from django.shortcuts import get_object_or_404

def profile(request, username):
    user = get_object_or_404(User_account, username=username)
    return render(request, 'account_app/profile.html', context={'user_info': user})
Вернуться на верх