Django错误题本

稳静平/技术博客 / 2024-02-25 / 原文

 

 

原来的userinfo的地址是Charfield,但由于地址本最好单独建表,照应一个用户可以有多个地址:就改成了如下

执行完:

python manage.py makemigrations
python manage.py migrate

这个代码之后,报错:: raise IntegrityError(
django.db.utils.IntegrityError: The row in table 'account_userinfo' with primary key '1' has an invalid foreign key: account_userinfo.post_address_id contains a value '这是个地址,显示一下吧' that does not have a correspondi account_customerpostaddress.id.

我觉得可能原因是原有数据是charfield造成的,这个一定要注意

 

 

class UserInfo(models.Model):
"""
"""

mobile = models.CharField(verbose_name="手机号", max_length=11) #要么手机,要么身份证
password = models.CharField(verbose_name="登录密码", max_length=32)
post_address = models.ForeignKey(verbose_name="快递地址",to="CustomerPostAddress",on_delete=models.CASCADE,null=True,blank=True)



class CustomerPostAddress(models.Model):
"""地址列表"""
receiver=models.CharField(verbose_name='收件人',max_length=20)
mobile=models.CharField(verbose_name='电话',max_length=11)
province=models.CharField(verbose_name='省份',max_length=20)
city=models.CharField(verbose_name='城市',max_length=20)
district = models.CharField(verbose_name='区/县', max_length=20)
street = models.CharField(verbose_name='街道', max_length=20)
detail=models.CharField(verbose_name='详细地址',max_length=20)
is_default=models.BooleanField(verbose_name='是否默认地址',default=True)