У меня есть этот проект, который правильно работает на моем компьютере. Однако, когда этот файл проекта извлекается/загружается другими людьми, RelatedObjectDoesNotExist появляется после createsuperuser.
Models.py
class User(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
first_name =models.CharField(max_length=100)
middle_name =models.CharField(max_length=100)
last_name =models.CharField(max_length=100)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
is_chairperson = models.BooleanField(default=False)
is_faculty = models.BooleanField(default=False)
is_student = models.BooleanField(default=False)
objects = UserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'middle_name', 'last_name']
class FacultyInfo (models.Model):
fac_user = models.OneToOneField(User, on_delete=CASCADE, primary_key=True)
@receiver(post_save, sender=User)
def create_or_update_user_profile(sender, instance, created, **kwargs):
if created:
if instance.is_faculty == True:
FacultyInfo.objects.create(fac_user=instance)
instance.facultyinfo.save()
Полная трассировка
Traceback (most recent call last):
File "E:\iPLM-master2\iPLM-master\manage.py", line 22, in <module>
main()
File "E:\iPLM-master2\iPLM-master\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 419, in execute_from_command_line
utility.execute()
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\__init__.py", line 413, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\base.py", line 354, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\contrib\auth\management\commands\createsuperuser.py", line 79, in exe
cute
return super().execute(*args, **options)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\core\management\base.py", line 398, in execute
output = self.handle(*args, **options)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\contrib\auth\management\commands\createsuperuser.py", line 189, in ha
ndle
self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
File "E:\iPLM-master2\iPLM-master\CRS\models.py", line 33, in create_superuser
user = self.create_user(
File "E:\iPLM-master2\iPLM-master\CRS\models.py", line 26, in create_user
user.save(using=self._db)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\contrib\auth\base_user.py", line 67, in save
super().save(*args, **kwargs)
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\base.py", line 726, in save
self.save_base(using=using, force_insert=force_insert,
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\base.py", line 774, in save_base
post_save.send(
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\dispatch\dispatcher.py", line 180, in send
return [
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\dispatch\dispatcher.py", line 181, in <listcomp>
(receiver, receiver(signal=self, sender=sender, **named))
File "E:\iPLM-master2\iPLM-master\CRS\models.py", line 149, in create_or_update_user_profile
instance.facultyinfo.save()
File "C:\Users\DELL\AppData\Local\Programs\Python\Python39\lib\site-packages\django\db\models\fields\related_descriptors.py", line 421, in _get_
raise self.RelatedObjectDoesNotExist(
CRS.models.RelatedObjectDoesNotExist: User has no facultyinfo.
Я попробовал этот код функции в базе данных факультета Info из этого вопроса Django, проверьте, если связанный объект существует ошибка: RelatedObjectDoesNotExist
def has_user(self):
return self.user_id is not None
По их словам, ошибка все еще сохраняется. Я вижу, что ошибка происходит на приемнике. Однако я не понимаю, почему это работает для меня, но не для других людей, которые использовали тот же файл.
FacultyInfo
только в том случае, еслиinstance.is_faculty
имеет значение True, но вы вызвалиinstance.facultyinfo.save()
независимо от этого условия, видите проблему? На самом деле вам даже нужно вызватьinstance.facultyinfo.save()
там, так как вызовcreate
сохранится в базе данных... - person Abdul Aziz Barkat   schedule 26.05.2021create
. Я надеюсь, что смогу проголосовать за ваш комментарий, но большое спасибо! - person Asyuiop   schedule 29.05.2021