简体   繁体   中英

Django Rest framework post ForeignKey

I am using DRF to update data. Its works good, but I am struggling how to update foreign keys.

{
            "name": "Ready Or Not",
            "releases": [
                {
                    "platform": {
                        "name": "test"
                    },
                    "date": "2019-10-02T11:38:18Z"
                }
            ]
        },

This is a response of my API.

But I want to update this 'releases' information as well.

To sent I have this. If the 'platform' name doesnt exist it should also create one. How do I do this?

        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)

My models:

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()

To post a ForeignKey instance, you have to use its id, for example in you case

if request.method == 'POST':
   platform = request.POST['platform'] # pass your html name parameter
   release_obj = Release(platform_id = platform) 
   release_obj.save()

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM