Извлечь данные c из json и сохранить в таблице в django - PullRequest
0 голосов
/ 09 января 2020

Я пытаюсь получить определенные c данные из внешнего API и сохранить их в моей таблице в django. Я могу получить все данные, но как мне отправить в таблицу только указанные c данные.

Мой файл view.py:

def post(self, request):

    api_key = "API-KEY"
    response = requests.get('https://api.themoviedb.org/3/movie/popular?api_key={}'.format(api_key))
    data = json.loads(response.text)

    serializer = GetListSerializers(data = data)
    # serializer = GetListSerializers(data=request.data)
    if serializer.is_valid():
        serializer.save()
        return Response(serializer.data, status=status.HTTP_201_CREATED)
    return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

Мой файл Model.py :

class GetList(models.Model):
    movieid = models.IntegerField()
    title = models.CharField(max_length=10)

    def __str__(self):
        return self.title

Мой файл serializer.py:

class GetListSerializers(serializers.ModelSerializer):
    class Meta:
        model = GetList
        fields = ('movieid', 'title')

Вывод api - это словарь, т. Е.

{
"total_results": 10000,
"total_pages": 500,
"page": 1,
"results": [
    {
        "original_title": "Ad Astra",
        "vote_average": 6,
        "id": 419704,
        "poster_path": "/xBHvZcjRiWyobQ9kxBhO6B2dtRI.jpg",
        "backdrop_path": "/p3TCqUDoVsrIm8fHK9KOTfWnDjZ.jpg",
        "adult": false,
        "overview": "decades before boldly faced emptiness and silence in search of the unknown.",
        "original_language": "en",
        "genre_ids": [
            12,
            18,
            9648,
            878,
            53
        ],
        "video": false,
        "vote_count": 1749,
        "release_date": "2019-09-17"
    },....

Я хочу отправить идентификатор и заголовок в таблицу .

1 Ответ

1 голос
/ 10 января 2020

Это способ хранения данных в БД с использованием модели Django.

title = data['results']['original_title']
GetList.objects.create(title=title)

Кроме того, вы можете пропустить поле идентификатора в модели GetList, поскольку все модели Django имеют значение по умолчанию автоинкрементное поле 'id'. Для удобства чтения я бы также предложил переименовать GetList в Mov ie.

...