Как исправить ошибку, которая возникает, когда я пытаюсь удалить объект, связанный с другим объектом в приложении 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)
Когда я пытаюсь удалить созданный мной объект класса Customer с именем Kasia (который, вероятно, является также суперпользователем), я не могу этого сделать. Я ранее удалил заказы этого клиента и теперь они имеют значение Null. Возникает ошибка типа и сообщение: 'Model instances without primary key values are unhashable'. Местонахождение исключения следующее: C:\Users\kasia\AppData\Roaming\Python\Python37\site-packages\django\db\models\base.py, строка 536, in hash
Когда я хочу удалить пользователя, происходит то же самое. Что здесь происходит?
Думаю, это происходит потому, что вы установили id = None
попробуйте удалить эту функцию и посмотрите, что произойдет
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.id = None