zoukankan      html  css  js  c++  java
  • Django中的外键赋值

    Django 外键约束如何赋值

    先看一下反向生成的model.py

    class ScDetail(models.Model):
        bac_name = models.ForeignKey('ScMain', related_name='SCMain7',on_delete=models.CASCADE,db_column='bac_name', blank=True, null=True)
        pro = models.ForeignKey('ScMain',  related_name='SCMain8',on_delete=models.CASCADE,db_column='pro_id',blank=True, null=True)
        fajiaoguan = models.CharField(max_length=255, blank=True, null=True)
        fajiaotiji = models.IntegerField(blank=True, null=True)
        junniliang = models.IntegerField(blank=True, null=True)
        baohujitianjialiang = models.IntegerField(blank=True, null=True)
        tanpanliang1_field = models.FloatField( blank=True, null=True)
        tanpanliang2_field = models.FloatField( blank=True, null=True)
        tanpanliang3_field = models.FloatField( blank=True, null=True)
        chufenliang = models.IntegerField(blank=True, null=True)
    
        class Meta:
            managed = False
            db_table = 'sc_detail'
    
    
    class ScMain(models.Model):
        bac_name = models.CharField(max_length=20)
        pro_id = models.CharField(max_length=20)
        pro_date = models.DateField()
        user = models.ForeignKey('Users', models.DO_NOTHING)
        insert_time = models.DateTimeField()
    
        class Meta:
            managed = False
            db_table = 'sc_main'
    
    

    想通过找到ScMain中的数据为ScDetail中的bac_name和pro赋值

    先来看我走过的坑。。。。。。

    
    #ERROR:Cannot assign "'aa'": "ScDetail.bac_name" must be a "ScMain" instance.
    detail_data.bac_name = sc_data.bac_name
    detail_data.pro_id = sc_data.pro_id
    
    # ERROR:Manager isn't accessible via ScMain instances
    detail_data.bac_name = ScMain().objects.get(id=sc_data.id).bac_name
    detail_data.pro_id = ScMain().objects.get(id=sc_data.id).pro_id
    

    正确方法:

    qs = ScMain.objects.filter(id=id1).first()
    detail_data.bac_name = qs
    detail_data.pro = qs
    

    个人的理解:

    qs最终返回的是一个queryset,理解为一个数组

    models.py是通过反向生成的,已经对外键形成了关联,直接赋值即可

    最终存储在detail_data的bac_name和pro是ScMain中的主键id值

    2020年的第一篇博客
    祝大家元旦快乐,今天不加班啦,回宿舍玩耍啊啊啊啊!!!

  • 相关阅读:
    Nand flash uboot 命令详解【转】
    uboot命令分析+实现【转】
    UBoot常用命令手册
    第一个Linux驱动-流水灯【转】
    lcd ram/半反穿技术解析【转】
    使用 .gitignore来忽略某些文件【转】
    git常见操作--忽略文件以及常用命令【转】
    Git忽略文件方法【转】
    Git查看、删除、重命名远程分支和tag【转】
    SPA与DPA 攻击【转】
  • 原文地址:https://www.cnblogs.com/lelezuimei/p/12130249.html
Copyright © 2011-2022 走看看