django update和create外键时出现问题

在Django中处理外键update和create操作时遇到困难。源代码显示,update操作通过models字段<django.db.models.fields.related.ForeignKey: advertisement>查找外键,但adsId作为外键ID未被正确识别。而在尝试create时,出现了错误导致操作失败。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 数据如下,需要进行update和create操作, advertisement为外键,adsId为外键id


        if journal_id:
            journalad = JournalAd.objects.filter(id=journal_id).update(**(my_data_dict))
        else:
            my_data_dict.update({"journal_id": journal_id})
            journalad = JournalAd.objects.create(**(my_data_dict))
            journalad.save()

当数据为
        my_data_dict = {
            "advertisement_id": adsId,
            ......
   }

update操作时报错:
JournalAd has no field named 'advertisement_id'

看源代码发现update时是按models字段<django.db.models.fields.related.ForeignKey: advertisement>来找外键的,advertisement_id不存在


把数据改为

        my_data_dict = {
            "advertisement": adsId,
            ......
   }
保存时ok

但create时肯定会出问题,报错:

Cannot assign "u'6'": "JournalAd.advertisement" must be a "Advertisement" instance.

记录一下,以后要注意两者区别
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值