模型中添加了外键关联如何插入数据?

模型中添加了外键关联如何插入数据?

我的UserInfo模型中RoleId字段是和另外一个模型设置了外键关联,在执行save方法的时候报错

https://img1.sycdn.imooc.com//climg/637c317a098eed6413240135.jpg

https://img1.sycdn.imooc.com//climg/637c316709f11e7009860069.jpg

https://img1.sycdn.imooc.com//climg/637c32510993a1a507940580.jpg

https://img1.sycdn.imooc.com//climg/637c319a09a95a8e09590775.jpg

如果先在RoleInfo模型中添加数据时也报错,

https://img1.sycdn.imooc.com//climg/637c3227091c1bd709810078.jpg

https://img1.sycdn.imooc.com//climg/637c3230090f312309930058.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
时间, 2022-11-22 10:48:29

同学,你好!

1、运行同学提供的部分代码在保存数据时没有报错。同学可以看下数据库的UserInfo表中对应的字段是否为RoleId

https://img1.sycdn.imooc.com//climg/637c3841092d391115980183.jpg

https://img1.sycdn.imooc.com//climg/637c384f09b1a6a904180174.jpg

2、同学将models.py文件中的代码和执行的代码以复制粘贴的形式提供下(不要截图),方便更好的解决问题

祝学习愉快!

  • 提问者 QXY_DZ #1

    老师,您这个是没有设置外键关联的,能正常插入数据,我这边的模型里面UserInfo模型和RoleInfo模型在RoleId字段是设置了外键关联的

    2022-11-22 10:54:30
  • 提问者 QXY_DZ #2
    django.db models
    
    
    models.Model:
        create_time = models., =update_time = models., =:
            abstract = Public_Field:
        Username = models., =Gender = models., =, =, ,
            , ,
        Age = models., =Loginname = models., =Password = models., =Mark = models., =RoleId = models., =:
            db_table = Public_Field:
        Rolename = models., =RoleId = models.,
                                   =,
                                   =,
                                   =models.CASCADE,
                                   =,
                                   =Roledec = models., =:
            db_table =


    2022-11-22 10:55:25
  • 提问者 QXY_DZ #3

    from django.db import models



    # Create your models here.

    class Public_Field(models.Model):

        create_time = models.DateTimeField('数据创建的时间', auto_now_add=True)

        update_time = models.DateTimeField('数据更新时间', auto_now=True)


        class Meta:

            abstract = True



    class UserInfo(Public_Field):

        Username = models.CharField('人员姓名', max_length=64)

        Gender = models.CharField('性别', max_length=1, choices=(

            ('1', '男'),

            ('2', '女'),

        ))

        Age = models.PositiveIntegerField('年龄', default=0)

        Loginname = models.CharField('登录名', max_length=64)

        Password = models.CharField('密码', max_length=256)

        Mark = models.CharField('备注', max_length=256)

        RoleId = models.PositiveIntegerField('角色ID', default=0)


        class Meta:

            db_table = 'UserInfo'



    class RoleInfo(Public_Field):

        Rolename = models.CharField('角色名', max_length=20)

        """

            设置外键关联

            models.ForeignKey()

            第一个参数:需要建立关联的另外一个模型的类名,字符串形式

            第二个参数:to_field = '关联的模型中的某个字段名',表示需要对哪个字段设置外键关联

            第三个参数:on_delete必传参数,设置删除关联选项

        """

        RoleId = models.ForeignKey('UserInfo',

                                   verbose_name='角色ID',

                                   to_field='RoleId',

                                   on_delete=models.CASCADE,

                                   db_column='RoleId',

                                   default=0)

        Roledec = models.CharField('角色信息描述', max_length=256)


        class Meta:

            db_table = 'RoleInfo'


    2022-11-22 10:56:40
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师