Почему автоматически создается "id" не из Mongodb и как это отключить
{
"_id": {
"$oid": "65ea05dbaa907e05219c0934"
},
"id": 6,
"title": "asd",
"content": "asd",
"author": "asd",
"category": "asd",
"createdAt": {
"$date": "2024-03-07T20:21:52.000Z"
}
}
Я не смог найти ответ на этот вопрос в Интернете и gpt
Пожалуйста, расскажите подробнее о том, как создается эта запись.
Для потомков. Поле _id
создается сервером MongoDB и используется им, поэтому удалить его по умолчанию невозможно. Оно представляет собой 12-битные двоичные данные.
Тем не менее, это не то, о чем спрашивал ОП.
Почему автоматически создается "id" не из Mongodb, и как это отключить
.
Djongo имитирует ORM Django, поэтому, как и в Django, в ваши модели неявно добавляется AutoField
(поле AUTOINCREMENT). Это поле id
, которое вы получаете автоматически.
Но если вы явно добавите ObjectIdField
(внутренне устанавливает primary_key
как True
), то неявно созданное AutoField
(поле AUTOINCREMENT) не будет добавлено.
class YourModel(models.Model):
_id = models.ObjectIdField() # <—- no more id field after this.
# •••Rest of your Model•••
Интересный факт: использование ObjectIdField
в ваших моделях избавит вас от необходимости вызывать миграции Django каждый раз, когда вы создаете новую модель.