python - Django Rest 框架发布 ForeignKey
问题描述
我正在使用 DRF 来更新数据。它工作得很好,但我正在努力如何更新外键。
{
"name": "Ready Or Not",
"releases": [
{
"platform": {
"name": "test"
},
"date": "2019-10-02T11:38:18Z"
}
]
},
这是我的 API 的响应。
但我也想更新这个“发布”信息。
要发送,我有这个。如果“平台”名称不存在,它也应该创建一个。我该怎么做呢?
headers = {
'Authorization': 'Token ' + ss_token,
}
data = {
"releases": [
{
"platform": {
"name": "wanttoupdate"
},
"date": "2019-10-02T11:38:18Z"
},
]
}
source = Source.objects.all().first()
url = source.url + str(947) + '/'
response = requests.patch(url, headers=headers, data=data)
我的模型:
class Game(models.Model):
name = models.CharField(max_length=255)
class Platform(models.Model):
name = models.CharField(max_length=255)
class Release(models.Model):
platform = models.ForeignKey(Platform, on_delete=models.CASCADE)
game = models.ForeignKey(Game, related_name='releases', on_delete=models.CASCADE)
date = models.DateTimeField()
解决方案
要发布 ForeignKey 实例,您必须使用它的 id,例如在您的情况下
if request.method == 'POST':
platform = request.POST['platform'] # pass your html name parameter
release_obj = Release(platform_id = platform)
release_obj.save()
推荐阅读
- django - Django taggit:为什么 annotate(same_tags=Count('tags')) 计算的是常用标签的数量而不是标签的总数?
- python - Python - Pynput 按键似乎与实际按键不同
- bash - 如何找到名称包含多个相同字符的文件?
- html - 带有 svg 的剪辑路径 - 如何更改剪辑位置或大小
- git - 没有关于将提交从一个分支移动到另一个分支的图表,很难理解材料
- performance - phpmailer 库花费了太多时间
- mysql - 如何获得每个工作日的平均金额?(MySQL)
- react-native - 材料下拉错误proptypes到prop.types
- blazor-client-side - Blazor 简单算术示例
- sql - Greenplum:在表之间复制数据