python - 当我以管理员身份尝试删除与 Django 应用程序中的另一个对象相关的对象时,如何解决发生的错误?
问题描述
我有一个名为 Customer 的类:
class Customer(models.Model):
# One to one relationship: customer is a user
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
name = models.CharField(max_length=200, null=True)
email = models.CharField(max_length=200)
# Returns the string representation of an object
def __str__(self):
return self.name
...还有一个名为 Order 的类(客户可以有很多订单)。
class Order(models.Model):
objects = None
# many to one relationship: customer can have many orders
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)
date_order = models.DateTimeField(auto_now_add=True)
complete = models.BooleanField(default=False, null=True, blank=False)
transaction_id = models.CharField(max_length=200, null=True)
# You can access the parent class from inside a method of a child class by using super()
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.id = None
def __str__(self):
return str(self.id)
当我试图删除我创建的名为 Kasia 的类 Customer 的对象(可能也是超级用户)时,我做不到。我之前已经删除了这个客户的订单,现在它们被设置为 Null 值。有一个类型错误和一条消息:“没有主键值的模型实例是不可散列的”。异常位置如下:C:\Users\kasia\AppData\Roaming\Python\Python37\site-packages\django\db\models\base.py, line 536, in hash
当我想删除用户时,也会发生同样的事情。这里发生了什么?
解决方案
我认为发生这种情况是因为您设置id = None
了尝试删除此功能并查看会发生什么
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.id = None
推荐阅读
- python - 在 PyCharm 中记录到文件时出现 UnicodeEncodeError
- sql-server - 如何修复此错误“为“piv”指定了多次“区域 ID”列
- excel - 有没有办法计算所有正在搜索的变量的行数
- python - 如何修复 AttributeError:“模块”对象没有属性“功能”?
- r - 如何结合 R ifelse() 和 kable()
- javascript - JavaScript:对于 join() 方法中的空标记,数组反向和连接无法按预期工作
- symfony - 我怎样才能只获取easyAdmin bundle twigs的正文内容
- jackrabbit - Queryresult 中不包含路径 (row.getValue)
- forms - 在属性本身是使用约束从另一个实体派生的实体的 Doctrine 实体中进行验证
- google-chrome - Chrome 中的几个对话框窗口不显示按钮