Сохраните данные в две таблицы. Студента с ID «Нет» не существует. Возможно, это было удалено? - PullRequest
0 голосов
/ 18 апреля 2020

Я пытался сохранить данные в стандартном классе User и для моего класса Student. Но у меня проблема.

Студента с идентификатором «Нет» не существует. Возможно, оно было удалено? Я действительно не знаю, как сохранить эти данные.

models.py

class Student(models.Model):
    studentIndex = models.IntegerField(unique=True)
    studentName = models.CharField(max_length=50)
    studentSurname = models.CharField(max_length=50, default='')
    studentPhoneNumber = models.CharField(max_length=12, default='+48')
    studentPesel = models.CharField(max_length=11, default='')
    studentStudyMode = models.CharField(max_length=12, default='')
    studentFaculty = models.CharField(max_length=30, default='')
    studentSemester = models.IntegerField(default='')
    studentAddress = models.CharField(max_length=255, default='')
    studentMotherName = models.CharField(max_length=100, default='')
    studentBirth = models.DateField(help_text='year-month-day')
    studentEmail = models.EmailField(max_length=255, default='')
    studentImage = models.ImageField(default='default.jpg', upload_to='profile_pics')
    studentPassword = models.CharField(max_length=100, default='12345678',
                                       help_text='Do not modify this field. Password will be generated automatically')
    studentDateJoined = models.DateTimeField(default=now)

    def save(self, *args, **kwargs):
        default_password = str(self.studentBirth)[0:4] + str(self.studentBirth)[5:7] + \
                           str(self.studentBirth)[8:10] +\
                           self.studentMotherName[0] +\
                           lower(self.studentName[0])
        User.objects.create_user(username=self.studentIndex, email=self.studentEmail, password=default_password,
                                 first_name=self.studentName, last_name=self.studentSurname)

    def __str__(self):
        return f'{self.studentIndex} - {self.studentName} {self.studentSurname}'

Когда я пытаюсь это

...
    def save(self, *args, **kwargs):
        default_password = str(self.studentBirth)[0:4] + str(self.studentBirth)[5:7] + \
                           str(self.studentBirth)[8:10] +\
                           self.studentMotherName[0] +\
                           lower(self.studentName[0])
        Student.objects.create() # <- this one
        User.objects.create_user(username=self.studentIndex, email=self.studentEmail, password=default_password,
                                 first_name=self.studentName, last_name=self.studentSurname)

У меня строковый индекс вне диапазона ошибка (IndexError) или превышена максимальная глубина рекурсии в сравнении (RecursionError)

Я новичок в Django, поэтому я буду благодарен, если вы мне поможете Большое спасибо

1 Ответ

0 голосов
/ 18 апреля 2020

Я сделал это. Все что мне нужно для этого. Я немного изменил свой код.

    def save(self, *args, **kwargs):
        try:
            default_password = str(self.studentBirth)[0:4] + str(self.studentBirth)[5:7] + \
                               str(self.studentBirth)[8:10] +\
                               self.studentMotherName[0] +\
                               lower(self.studentName[0])
            Student.objects.create()
            User.objects.create_user(username=self.studentIndex, email=self.studentEmail, password=default_password,
                                     first_name=self.studentName, last_name=self.studentSurname)
            super(Student, self).save() # <- this is my solve
        except IndexError:
            print('IndexError')
        except RecursionError:
            print('RecursionError')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...