Создание целочисленного поля с автоматическим увеличением в 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})