python - 无法使用 MongoDB 从 Django 管理面板中删除对象
问题描述
我有一个使用由 Djongo 连接的 MongoDB 的 Django 项目。我创建了一个简单的模型,如下所示:
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)
推荐阅读
- node.js - webpack 节点 API 中的观看模式
- r - 使用向量化将矩阵与 R 中的向量进行逐行比较
- algorithm - 这个程序的复杂性是 n^2*logn 还是什么?
- html - 如何将表单元素移动到中心?
- java - 如何从名字中取出 3 个随机字母,从姓氏和电话号码中取出 2 个字母,从给定字符串“specialChar”中取出 1 个符号
- node.js - 如何使用带有 mongodb 的 nodejs 更新数组中的嵌套对象?
- python - 如何使用相当于 excel averageifs 在 python 数据框中创建新列
- python - 为什么这不在一行上打印我的列表?
- javascript - 将本地存储项添加到 javascript 数组中
- javascript - Javascript:从驱动器和网络摄像头获取高分辨率照片,在 480x270 画布上绘制,然后将高分辨率保存在数据库中