删除相关对象会删除 ForeignKey 对象
Deleting related objects deletes the ForeignKey object
我有以下型号:
class User(models.Model):
user_question = models.ForeignKey(UserQuestion)
class Question(models.Model):
text = models.CharField(max_length=255)
class UserQuestion(models.Model):
answer = models.CharField(max_length=255)
question = models.ForeignKey(Question)
user = models.ForeignKey(User, related_name='questions')
当我运行用户模型下面的查询也被删除
user.questions.all().delete()
有没有什么办法可以在不删除用户的情况下删除问题?
我尝试遍历这些问题,但没有用
questions = user.questions.all()
for an in questions:
answer.delete()
我认为查询集是惰性的,所以我可能需要在删除之前对其进行评估,所以我打印了它,但这没有用。
print questions
questions.delete()
我知道使 ForeignKey 可以为 null 会为我提供诸如 clear 和 remove 之类的方法,但我不想这样做,因为我不想让任何孤立的用户提出问题。
我更新了外键如下
class UserQuestion(models.Model):
answer = models.CharField(max_length=255)
user = models.ForeignKey(User, related_name='questions', null=True, on_delete=models.SET_NULL)
我运行makemigrations
和migrate
但是当我运行下面的查询问题模型仍然被删除。
user.questions.all().delete()
question = models.ForeignKey(Question, related_name='answers', on_delete=models.SET_NULL, null=True)
未经测试,但应该可以。
您的问题是数据库相关问题,删除外键时数据库会尝试删除相关行。
在 上阅读更多关于其他选项的信息。
我有以下型号:
class User(models.Model):
user_question = models.ForeignKey(UserQuestion)
class Question(models.Model):
text = models.CharField(max_length=255)
class UserQuestion(models.Model):
answer = models.CharField(max_length=255)
question = models.ForeignKey(Question)
user = models.ForeignKey(User, related_name='questions')
当我运行用户模型下面的查询也被删除
user.questions.all().delete()
有没有什么办法可以在不删除用户的情况下删除问题?
我尝试遍历这些问题,但没有用
questions = user.questions.all()
for an in questions:
answer.delete()
我认为查询集是惰性的,所以我可能需要在删除之前对其进行评估,所以我打印了它,但这没有用。
print questions
questions.delete()
我知道使 ForeignKey 可以为 null 会为我提供诸如 clear 和 remove 之类的方法,但我不想这样做,因为我不想让任何孤立的用户提出问题。
我更新了外键如下
class UserQuestion(models.Model):
answer = models.CharField(max_length=255)
user = models.ForeignKey(User, related_name='questions', null=True, on_delete=models.SET_NULL)
我运行makemigrations
和migrate
但是当我运行下面的查询问题模型仍然被删除。
user.questions.all().delete()
question = models.ForeignKey(Question, related_name='answers', on_delete=models.SET_NULL, null=True)
未经测试,但应该可以。
您的问题是数据库相关问题,删除外键时数据库会尝试删除相关行。
在