Невозможно удалить объект из панели администратора 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)