django添加数据库提示没有对应的字段
本帖最后由 tengke 于 2023-4-17 15:44 编辑from django.db import models
# Create your models here.
class Userinfo(models.Model):
name=models.CharField(verbose_name="姓名",max_length=32)
password=models.CharField(verbose_name="密码",max_length=64)
age=models.CharField(verbose_name="其他",max_length=12)
daa=models.CharField(verbose_name="其他",max_length=12)
gen=models.CharField(verbose_name="其他",max_length=12)
defs= models.ForeignKey(verbose_name="部门",to="Uer",to_field="id",null=True,blank=True,on_delete=models.CASCADE)
class Uer(models.Model):
name=models.CharField(max_length=32)
password=models.CharField(max_length=64)
age=models.IntegerField()
def __str__(self):
return self.name
——————————————————————
class Userinfo(forms.ModelForm):
class Meta:
model = models.Userinfo
fields = ["daa", "name","id","age","gen","password","id","defs"]
def user_add(request):
form = Userinfo(data=request.POST)
if form.is_valid():
form.save()
return render("/rootuseradd")
return render(request, "user_add.html", {"form":form})
————————————————————
前台数据 和程序也是可以正常显示的
前台数据添加完点击提交后台就会有报错日志
——————————————
大佬麻烦看看
看起来你在尝试在Django项目中添加数据库,但遇到了“没有对应的字段”的错误。这个问题可能是由于你的Django模型与数据库中的表结构不匹配所导致的。以下是一些建议帮助你解决问题:
1、确保迁移文件正确生成和应用:在Django中,当你修改了模型后,需要创建迁移文件(migration file)来更新数据库表结构。你可以通过以下命令生成迁移文件:
python manage.py makemigrations
然后使用以下命令应用迁移文件:
python manage.py migrate
2、检查模型字段:仔细检查你的Django模型中的字段,确保它们与数据库中的表结构相匹配。注意字段的类型、名称和选项。如果需要,请在模型中添加缺少的字段,并重新生成和应用迁移文件。
3、检查数据库连接:确保你的数据库连接设置正确。在settings.py文件中检查DATABASES配置,确保它指向正确的数据库。如果使用的是SQLite,可以尝试删除旧的数据库文件,然后重新运行迁移命令以创建一个新的数据库文件。
4、如果你在Django模型中有外键,确保外键引用的模型已经在其他应用程序中定义。如果需要,你可以在settings.py文件中添加应用程序到INSTALLED_APPS列表。
5、如果你在开发过程中更改了模型字段类型,确保在迁移文件中执行正确的操作(例如,更改字段类型或删除并重新创建字段)。在某些情况下,你可能需要手动编辑迁移文件以获得正确的结果。
如果问题仍然存在,请提供更多关于你的Django模型、迁移文件和数据库设置的详细信息,以便为你提供更具体的帮助。
ile "D:\软件\djangoProject\venv\lib\site-packages\MySQLdb\connections.py", line 254, in query
_mysql.connection.query(self, query)
django.db.utils.IntegrityError: (1452, 'Cannot add or update a child row: a foreign key constraint fails (`python`.`#sql-alter-934-1dc`, CONSTRAINT `app_userinfo_defs_id_9d45b2fa_fk_app_uer_id` FOREIGN KEY (`defs_id`) REFERENCES `app_uer` (`id`))')
有问题 本帖最后由 isdkz 于 2023-4-17 17:13 编辑
tengke 发表于 2023-4-17 15:46
ile "D:\软件\djangoProject\venv\lib\site-packages\MySQLdb\connections.py", line 254, in query
_ ...
根据你提供的错误信息,问题出在一个外键约束。错误信息显示,尝试添加或更新子行时,外键约束无法满足。具体来说,这是app_userinfo_defs_id_9d45b2fa_fk_app_uer_id外键约束,它将defs_id字段与app_uer表的id字段关联。
以下是一些建议帮助你解决这个问题:
1、检查你的Django模型:检查app_userinfo和app_uer这两个模型,确保外键关系正确设置。app_userinfo模型中应该有一个ForeignKey字段,指向app_uer模型。例如:
class AppUer(models.Model):
# app_uer model fields
class AppUserInfo(models.Model):
defs = models.ForeignKey(AppUer, on_delete=models.CASCADE)
# other fields
2、确保数据库中的app_uer表已存在:如果app_uer表不存在或在迁移过程中出现问题,可能会导致这个外键约束错误。检查数据库中是否存在app_uer表,以及它是否包含正确的字段。
3、检查迁移文件:确认迁移文件正确创建了外键关系。如果迁移文件有问题,你可能需要手动修复它们。在修复迁移文件后,确保应用它们:
python manage.py migrate
4、检查数据完整性:错误信息表明,当尝试插入或更新app_userinfo表的记录时,defs_id字段指向了一个不存在于app_uer表中的id。检查插入或更新操作的数据,确保它们符合外键约束。如果插入或更新操作是通过Django的视图或表单进行的,请检查它们的逻辑。
5、如果你对模型进行了更改并重新运行了迁移,可能需要重置迁移。你可以使用以下命令重置迁移:
python manage.py migrate app_name zero
然后删除迁移文件夹中的所有迁移文件,重新生成迁移文件并应用它们:
python manage.py makemigrations
python manage.py migrate
希望这些建议能帮助你解决问题。如果问题仍然存在,请提供更多关于你的Django模型、迁移文件和数据库设置的详细信息,以便为你提供更具体的帮助。 我在settings文件中添加了
DATABASES = {
'default': {
'ENGINE': '
'NAME':
'USER' : '
'PASSWORD':
'HOST':'
'PORT':'
'OPTIONS': {
"init_command": "SET foreign_key_checks = 0;",
}
}
}
按照https://blog.csdn.net/weixin_44984864/article/details/108000464 可以进行启动·了·
页:
[1]