Почему автоматически создается "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 каждый раз, когда вы создаете новую модель.

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