首页 > 其他 > 详细

Django中的外键赋值

时间:2020-01-01 22:54:35      阅读:301      评论:0      收藏:0      [点我收藏+]

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年的第一篇博客
祝大家元旦快乐,今天不加班啦,回宿舍玩耍啊啊啊啊!!!

Django中的外键赋值

原文:https://www.cnblogs.com/lelezuimei/p/12130249.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!