我决定为我的网站实施注册选项,我使用了this tutorial(带有确认部分的注册)。按照此材料,我创建了Profile模块来保存一些信息。现在一切正常(似乎正在运行),但是问题在于旧的配置文件会引发relatedObjectDoesNotExist
错误。根据这两个问题(first,second),我需要进行迁移以为旧用户帐户创建配置文件。我尝试按照答案之一的建议遵循此doc,但是随后尝试运行迁移时出现以下错误:KeyError: ('stv', 'bazinekaina')
stv
是我的应用程序的名称,bazinekaina
是我需要创建配置文件的模型之后的下一个模型的名称。
如何将迁移仅限于第一个模型?
我相关的models.py
代码:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
email_confirmed = models.BooleanField(default=False)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField(max_length=254)
@receiver(post_save, sender=User)
def update_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.get(user=instance)
instance.profile.save()
#next model, this one throws an error, despite the fact it should not be touched at all
class BazineKaina(models.Model):
#bazines kainos modelis
bazka = models.DecimalField(max_digits=5, decimal_places=2)
data = models.DateField(auto_now=False, auto_now_add=True)
def __str__(self):
return str(self.bazka)
class Meta:
verbose_name_plural = "Bazinė kaina"
get_latest_by = 'data'
使用名为python manage.py makemigrations --empty stv
的{{1}}命令创建的迁移文件:
0001_initial.py
如何以及如何解决阻止迁移应用到不相关的模型(并引发错误)?
很抱歉,这是一个基本问题,但是整个django对我来说仍然很新。
答案 0 :(得分:1)
如果您的迁移名为0001_initial,则意味着您没有实际为概要模型创建表的迁移。
删除该迁移并运行:
python manage.py makemigrations stv
python manage.py makemigrations stv --empty --name create_profiles
这时,您应该有一个文件0002_create_profiles.py,并使用逻辑在此处创建配置文件。