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