Проблема с генерацией идентификатора для нового объекта адреса

Я столкнулся с проблемой в своем проекте, когда ID для нового объекта адреса не генерируется, как ожидалось, при добавлении нового адреса. Ниже приведен соответствующий фрагмент кода из моего проекта:

models.py:

class Address(EmbeddedDocument):
    id = fields.ObjectIdField(required=True, default=fields.ObjectId)
    line1 = fields.StringField()
    line2 = fields.StringField()
    city = fields.StringField()
    state = fields.StringField()
    zip_code = fields.StringField()

class UserExt(Document):
    addresses = fields.ListField(field=fields.EmbeddedDocumentField(Address))

usercontroller.py:

@api_view(["POST"])
def add_address(request, userId):
    try:
        data = request.data
        new_address_id = user_service.add_address(data, userId)
        return Response({"message": "Address added successfully", "address_id": new_address_id}, status=201)
    except Exception as e:
        return Response({"message": str(e)}, status=400)

services.py

def add_address(data, userId):
    new_address = repo.add_address(data, userId)
    return new_address

user_repository.py

def add_address(data, userId):
    try:
        connection = conn_db()
        new_address = data.get("addresses")  # Access the new address data
        if new_address:
            result = connection.get_collection("user").update_one(
                {"_id": ObjectId(userId)},
                {"$push": {"addresses": new_address}}
            )
            if result.modified_count > 0:
                return {"message": "New address added successfully"}
            else:
                raise Exception("Failed to add new address")
        else:
            raise Exception("No address data provided")
    except Exception as e:
        raise e

{
    "id": "65c26ed05186a91e4ef3d7c6",
    "line1": "abc",
    "line2": "xyz",
    "city": "palanpur",
    "state": "Gujarat",
    "zip_code": "385515"
}

Текущий выход:

{
    "line1": "pqr",
    "line2": "lmn",
    "city": "gandhinagar",
    "state": "Gujarat",
    "zip_code": "382028"
}

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