鱼C论坛

 找回密码
 立即注册
查看: 2009|回复: 4

[已解决]django添加数据库提示没有对应的字段

[复制链接]
发表于 2023-4-17 15:40:27 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 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})


————————————————————
前台数据 和程序也是可以正常显示的
[L[FL`K`5(}V0_LCHYVA4SV.png `4{~I0)R1FUBQ91SG8NQL$S.png

前台数据添加完点击提交后台就会有报错日志
0J[H7I0E6J1M[D)5`0KX5KK.png

——————————————
大佬麻烦看看


最佳答案
2023-4-17 15:40:28
看起来你在尝试在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模型、迁移文件和数据库设置的详细信息,以便为你提供更具体的帮助。

最佳答案

查看完整内容

看起来你在尝试在Django项目中添加数据库,但遇到了“没有对应的字段”的错误。这个问题可能是由于你的Django模型与数据库中的表结构不匹配所导致的。以下是一些建议帮助你解决问题: 1、确保迁移文件正确生成和应用:在Django中,当你修改了模型后,需要创建迁移文件(migration file)来更新数据库表结构。你可以通过以下命令生成迁移文件: 然后使用以下命令应用迁移文件: 2、检查模型字段:仔细检查你的Djan ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-17 15:40:28 | 显示全部楼层    本楼为最佳答案   
看起来你在尝试在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模型、迁移文件和数据库设置的详细信息,以便为你提供更具体的帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-17 15:46:57 | 显示全部楼层
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`))')

有问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-4-17 17:09:43 | 显示全部楼层
本帖最后由 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模型、迁移文件和数据库设置的详细信息,以便为你提供更具体的帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-17 17:22:01 | 显示全部楼层
我在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 可以进行启动·了·
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 09:22

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表