Проблема с генерацией идентификатора для нового объекта адреса
Я столкнулся с проблемой в своем проекте, когда 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"
}