Получение "IntegrityError" в моделях Django при попытке создания

Я работаю над приложением с бэкендом Django и в настоящее время разрабатываю страницу регистрации. Вот мой код: models.py

from django.db import models
from django.contrib.auth.models import User
from django.core.validators import MaxValueValidator, MinValueValidator
from datetime import date
from .countries import COUNTRIES
from .hobbies import HOBBIES


class Hobbies(models.Model):
    hobby = models.CharField(max_length=255, choices=HOBBIES)


class Profile(models.Model):

    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def username(self):
        usern = User.objects.get(id=self.user.id)
        usern = usern.username
        return usern

    setup = models.BooleanField(default=False)
    gender = models.CharField(max_length=100, blank=True)
    dob = models.DateField(blank=True)

    def age(self):
        today = date.today()
        age = today.year - self.dob.year - ((today.month, today.day) < (self.dob.month, self.dob.day))
        return age

    orgin = models.CharField(max_length=300, choices=COUNTRIES, blank=True)
    lives = models.CharField(max_length=300, choices=COUNTRIES, blank=True)
    bio = models.CharField(max_length=150, blank=True)
    email = models.CharField(max_length=255, blank=True)
    image = models.ImageField(upload_to='images', blank=True)
    hobbie = models.ManyToManyField('Hobbies', blank=True)
    

views.py-

from django.shortcuts import render
from rest_framework import viewsets, status
from .serializers import UserSerializer, ProfileSerializer
from .models import Profile
from django.db import IntegrityError
from rest_framework.response import Response
from rest_framework.decorators import action
from django.contrib.auth.models import User
from rest_framework.authentication import TokenAuthentication 
from rest_framework.permissions import IsAuthenticated, AllowAny
from rest_framework.permissions import IsAuthenticatedOrReadOnly, BasePermission
from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
import json
from django.contrib.auth import authenticate
# Create your views here.
#.....

@csrf_exempt
def signup(request):
    if request.method == 'POST':
        data = json.loads(request.body)
        username = data.get("username", "")
        password = data.get("password", "")
        
        try:
            user = User.objects.create_user(username, '',password)
            user.save()
            created = True
            
            profile = Profile.objects.create(user=user)
            profile.save()
            

        except IntegrityError:
            created = False
        return JsonResponse(created, safe=False)

Все работает, когда я пытаюсь создать нового пользователя без создания нового профиля. Но когда я пытаюсь создать профиль, когда я создаю пользователя, я получаю "IntegrityError.": "NOT NULL constraint failed: home_profile.dob" .Как я могу это исправить?

Ваша проблема кроется здесь:

dob = models.DateField(blank=True)

Поля даты, если они пусты, отображаются в базе данных как null, поэтому необходимо добавить

dob = models.DateField(blank=True, null=True)

Как правило, blank=True говорит, что поле не нужно заполнять для форм. null=True говорит, что база данных может принять нулевое значение. Исключение составляют строковые типы, например, CharField и TextField, которые используют только blank=True, поскольку django сохраняет пустую строку, "", а не нулевое значение.

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