Соответствующий запрос не существует при первом входе - PullRequest
1 голос
/ 11 июля 2019

У меня есть эластичный поиск в моей базе данных. Я проиндексировал таблицу с именем Student, Student имеет ключ Foregin User, мой пример кода выглядит следующим образом,

index.py

    class Meta:
        model = Student
        related_models = [User]
        fields = ['id', 'class','classteacher']

    def get_instances_from_related(self, related_instance):
        if isinstance(related_instance, User):
            return Student.objects.get(user= related_instance.id)

models.py

class Student(CommonBase):
    """
    Student details.

    """
    user = models.ForeignKey(User, on_delete=models.CASCADE)
    classteacher = models.ManyToManyField('Teacher', null=True, blank=True)
    class = models.IntegerField( blank=True,
                                              null=True) 

class User(CommonBase, AbstractUser):


    first_name = models.CharField(blank=True,max_length=255, verbose_name='first name')
    dob = models.DateField(null=True, blank=True)
    profile_pic_link = models.CharField(max_length=200, null=True, blank=True)
    email = models.EmailField(max_length=254, unique=True, verbose_name='email address')

Когда я пытаюсь войти через администратора Django, я получаю,

self.model._meta.object_name
students.models.Student.DoesNotExist: Student matching query does not exist.
ERROR "POST /admin/login/?next=/admin/ HTTP/1.1" 500 203435

Это происходит из-за этих строк,

def get_instances_from_related(self, related_instance):
    if isinstance(related_instance, User):
        return  Student.objects.get(user= related_instance.id)

т.е. он пытается получить «Пользователь» через «Студент» при входе через Django.

Я сделал временное исправление, поставив пробный улов,

def get_instances_from_related(self, related_instance):
    if isinstance(related_instance, User):
       try:
           return Student.objects.get(user= related_instance.id)
       except:
           logger.error(str(e))


Есть ли лучшие решения ??

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...