Django rest-framework с mongodb не создает идентификатор первичного ключа автоматического поля

Я сохраняю записи в MongoDB, используя структуру отдыха Django. Миграция, как показано ниже -

# Generated by Django 3.0.5 on 2021-01-17 10:39

from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='Demo',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('description', models.CharField(default='', max_length=1000)),
                ('user_id', models.IntegerField()),
                ('published', models.BooleanField(default=False)),
            ],
        ),
    ]

Но записи в MongoDB не имеют автоматически созданного идентификатора.

{
    "_id" : ObjectId("6004354240e7097e5b392e5c"),
    "description" : "sdf asdaaaaaaaaaaaaaaaaaaaaaaaaaaa ass d",
    "user_id" : 11,
    "published" : false
}

Вставка записей с использованием serializer.save()

Функция добавления записи приведена ниже.

def demo_add(request):
user_id=request.user.id
tutorial_data = JSONParser().parse(request)
demo_serializer = DemoSerializer(data=tutorial_data)

if demo_serializer.is_valid():
    demo_serializer.save({"user_id":user_id ,"description":tutorial_data['description']})
    return JsonResponse({"result": True})
return JsonResponse({"result":False,"msg":"Invalid validation"}, status=status.HTTP_400_BAD_REQUEST)



Ответы (1)


Django уже позаботится об этом в фоновом режиме, так что вам не нужно, как видите:

auto_created = True, primary_key = True, serialize = False, verbose_name = 'ID')

{
    "_id" : ObjectId("6004354240e7097e5b392e5c"),
    "description" : "sdf asdaaaaaaaaaaaaaaaaaaaaaaaaaaa ass d",
    "user_id" : 11,
    "published" : false
}

Первая строка - это ваш идентификатор, каждый раз, когда создается объект, идентификатор будет другим.

Хотя без дополнительного кода сложно быть более конкретным

person Gaëtan GR    schedule 17.01.2021
comment
Это запись, созданная в mongodb {_id: ObjectId (6004354240e7097e5b392e5c), описание: sdf asdaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ass d, user_id: 11, опубликовано: false} В JSON ясно видно, что ключ id не создается. - person san; 17.01.2021
comment
Используемый код: def demo_add (request): user_id = request.user.id tutorial_data = JSONParser (). Parse (request) demo_serializer = DemoSerializer (data = {user_id: user_id, description: tutorial_data ['description']}) если demo_serializer. is_valid (): demo_serializer.save () return JsonResponse ({result: True}) return JsonResponse ({result: False, msg: Invalid validation}, status = status.HTTP_400_BAD_REQUEST) - person san; 17.01.2021
comment
отредактировал главный вопрос @ Gaëtan - person san; 17.01.2021