Невозможно удалить объект из панели администратора Django с помощью MongoDB

У меня есть проект Django, использующий MongoDB, подключенную через Djongo. Я создал простую модель, которая выглядит следующим образом:

from django.db import models

# Create your models here.
class Property(models.Model):
    name = models.CharField(max_length=128, blank=False)
    property_type = models.CharField(max_length=24, blank=True)
    include_on = models.CharField(max_length=256, blank=True)
    format_example = models.TextField(blank=True)
    notes = models.TextField(blank=True)

После регистрации модели с помощью строки admin.site.register(Property) в файле admin.py в итоге я вижу, что моя модель появилась. После добавления теста Property я вижу строку

The property “Property object (61226db9f4f416b206c706e5)” was added successfully.

Что говорит мне, что элемент был добавлен. Он также появляется на панели администратора, но выглядит так:

Property object (None)

Если я выбираю свойство, то получаю ошибку, которая гласит:

Property with ID “None” doesn’t exist. Perhaps it was deleted?

Если я пытаюсь удалить свойство, я получаю ValueError с ошибкой

Field 'id' expected a number but got 'None'.

Поскольку я сейчас изучаю Django/MongoDB, я уже однажды сталкивался с ValueError. Исправлением было удаление всей базы данных и начало работы заново. Проблема в том, что я не хочу столкнуться с этим в будущем и хочу знать, что мне нужно сделать, чтобы исправить это, или исправить то, что я делаю неправильно.

Я нашел ответ. Оказывается, мне нужно назначить первичный ключ. Я исправил это, изменив свою модель на...

class Property(models.Model):
    name = models.CharField(primary_key=True, max_length=128, blank=False)
    property_type = models.CharField(max_length=24, blank=True)
    include_on = models.CharField(max_length=256, blank=True)
    format_example = models.TextField(blank=True)
    notes = models.TextField(blank=True)
Вернуться на верх