Используя сигналы в django, пытаюсь сгенерировать код для SMS-верификации, но сгенерированный код не виден в админке. что я упускаю?

структура папки введите здесь описание изображения

models.py from face_detect

from django.db import models
from django.contrib.auth.models import User


# Create your models here.
class Profile(models.Model):
    user = models.ForeignKey(User,on_delete=models.CASCADE,null=True)
    mobile = models.CharField(max_length=10,null=True)
    add = models.CharField(max_length=10,null=True)
    image = models.FileField(null=True)

    def __str__(self):
        return self.user.username

models.py из otp

from django.db import models
from django.contrib.auth.models import User
from face_detect.models import Profile
import random
# Create your models here.

class Code(models.Model):
    number = models.CharField(max_length=5, blank=True)
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.number)

    #otp verification
    def save(self, *args, **kwargs):
        number_list = [x for x in range(10)]
        code_items = []

        for i in range(5):
            num = random.choice(number_list)
            code_items.append(num)

        code_string = "".join(str(item) for item in code_items)
        self.mobile = code_string

        super().save(*args,**kwargs)

signals.py from otp

from face_detect.models import Profile
from django.contrib.auth.models import User
from .models import Code
from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=User)
def post_save_generate_code(sender, instance, created, *args, **kwargs):
    if created:
        Code.objects.create(user=instance)

apps.py из otp

from django.apps import AppConfig


class OtpConfig(AppConfig):
    name = 'otp'

    def ready(self):
        import otp.signals

init.py from otp

default_app_config = 'otp.apps.OtpConfig'

admin.py from otp

from django.contrib import admin
from .models import Code
# Register your models here.
admin.site.register(Code)

код см. в http://127.0.0.1:8000/admin/otp/code/ введите описание изображения здесь

код не виден.

как я могу сделать код видимым, чтобы я мог использовать его для проверки otp при входе в систему.

Заранее спасибо

На странице администратора вы увидите метод __str__, так что, похоже, с вашим кодом все в порядке, скорее всего, значение экземпляра кода равно "", Также еще одна вещь

def __str__(self):
    return str(self.number)

вам не нужно приводить его к str здесь уже есть поле char и еще одна вещь здесь:

   def __str__(self):
        return self.user.username

в модели Profile вы сделали пользователя nullable, что означает, что не все экземпляры профиля могут не иметь пользователя, поэтому вы получите NoneType has no attribute username. измените это на следующее, чтобы предотвратить эту ошибку:

def __str__(self):
        return self.user.username if self.user else ""
Вернуться на верх