Python django Foreign key IntegrityError:myapp_model2.name_id不能为NULL
我已经通过django管理页面在Model1中填写了3个用户名密码示例 在我看来,这张清单是Python django Foreign key IntegrityError:myapp_model2.name_id不能为NULL,python,django,python-2.7,django-views,Python,Django,Python 2.7,Django Views,我已经通过django管理页面在Model1中填写了3个用户名密码示例 在我看来,这张清单是 class Model1(models.Model): username = models.CharField(max_length=100,null=False,blank=False,unique=True) password = models.CharField(max_length=100,null=False,blank=False) class Model2(model
class Model1(models.Model):
username = models.CharField(max_length=100,null=False,blank=False,unique=True)
password = models.CharField(max_length=100,null=False,blank=False)
class Model2(models.Model):
name = models.ForeignKey(Model1)
unique_str = models.CharField(max_length=50,null=False,blank=False,unique=True)
city = models.CharField(max_length=100,null=False,blank=False)
但回溯显示我在线路上有错误
a,b=Model2.objects.get\u或\u create(unique\u str='f3h6y67')
IntegrityError:myapp\u model2.name\u id不能为空
我做错了什么吗?您必须在模型2中的外键字段“name”中设置
null=True
,以允许在没有值的情况下实例化其模型,否则,当您在没有定义名称的情况下调用get\u或\u create时,它会引发IntegrityError,因为在创建对象时它没有名称(user)已定义但
userlist = Model1.objects.all()
#print userlist[0].username, userlist[0].password
for user in userlist:
a,b = Model2.objects.get_or_create(unique_str='f3h6y67')
a.name = user
a.city = "acity"
a.save()
您也可以在调用get_或_create时直接设置名称:
class Model2(models.Model):
name = models.ForeignKey(Model1, null=True)
根据您计划创建这些对象的方式,您可能还需要添加blank=True
,以便在表单验证中允许空值
有关此选项和其他您可能感兴趣的字段/模型选项的更多信息,请参阅:)
嗯 您是否仍在设置
a.name=user
,然后设置a.save()
?它确实存在:)尽管据我所知,您正在尝试创建一个“更轻”的用户模型版本,不是吗?你应该考虑直接使用它。
a,b = Model2.objects.get_or_create(unique_str='f3h6y67', name=user)