Получить идентификатор объекта MongoDb в Django Serializer

Я создаю Django сервер, используя django_rest_framework и mondogb(djongo). Я хочу использовать сгенерированный mongoDb ObjectId в качестве первичного ключа. Как получить mongoDb ObjectId из класса сериализатора?

Это моя модель пользователя

class User(AbstractUser):
    name = models.CharField(max_length=255)
    description = models.TextField(default='', blank=True)

    profile_pic = models.ImageField(upload_to='static/profile_pics/', blank=True)
    username = models.CharField(max_length=255, unique=True)
    password = models.CharField(max_length=255)

    USERNAME_FIELD = 'username'
    REQUIRED_FIELDS = []

Это мой пользовательский сериализатор

class UserSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ['username', 'password', 'name', 'description', 'profile_pic']
        extra_kwargs = {
            'password': {'write_only': True}
        }

views.py

class GetUserView(APIView):
    def get(self, request):
        data = UserSerializer(User.objects.filter(id=request.id)).data
        return Response(data)

Возвращается объект json

{
    'id': '<id>' eg: 1 or 2 or 3 etc..
    'name': '<user-name>',
    'username': '<username>',
    'description': '<description>',
    'profile_pic': '<profile_pic>'
}

Но я хочу получить нижеупомянутый id (mongoDb ObjectId)

{
    'id': 621343a45048323e635c4ae6
    ...
}

Ваша модель пользователя должна наследоваться от базовой модели Djongo. Но в этом случае вы потеряете многие функциональные возможности, которые появляются при наследовании от класса AbstractUser. Мой совет - использовать реляционную базу данных для вашей таблицы пользователей, затем вы можете направить другие таблицы на использование mongodb.

возможно, взгляните на это: Здесь объясняется, как Django лучше подходит для реляционных баз данных.

Вернуться на верх