Django 删除多对多字段

标签 django postgresql django-models many-to-many

我有2个模型User,它是Django的auth_user,以及HostCourse,它与User有多对多关系

class HostCourse(TimeStamped, models.Model):
    created_by = models.ManyToManyField(User, blank=True)
    ...

我正在使用 Postgresql,并且我正在尝试从 dbshel​​l 中删除 HostCourse 中的数据。

delete from courses_hostcourse;

当我从HostCourse中删除一些数据时,它会抛出以下错误:

错误:表“courses_hostcourse”上的更新或删除违反了表“courses_hostcourse_created_by”上的外键约束“courses_hostcourse_c_hostcourse_id_ec1070c3_fk_courses_h”

如果我添加on_delete=models.CASCASE,它是否也会删除相应HostCourse的用户?如果是,我怎样才能找到解决方法,以便它删除类(class)而不是用户?

最佳答案

通常你会在 python shell 中这样做:

./manage.py shell
>>> HostCourse.objects.all().delete()

ManyToManyField 创建一个新表,因此您需要先删除其中的所有对象。用户不会被删除 在 db_shell 中你会这样做:

delete from courses_hostcourse_created_by;
delete from courses_hostcourse;

关于Django 删除多对多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69346112/

相关文章:

python - 上传文件后,在 Django 中的何处运行 Python 代码?

python - Django URLConf 不匹配有效的正则表达式

django - 在 PgAdmin 4 中未检测到在 psql 中创建的数据库

sql - 交叉应用中的分组依据

python - 如何强制django立即保存而不是在循环后进行批量更新

python - Django templateTag 中的上下文 KeyError

Django RAW SQL,命名参数

java - 需要在 Java 中访问 JRuby on Rails 应用程序的 Heroku Postgres DB

python - 如何存储需要在不同用户之间共享的敏感信息?

python - 无法上传类型错误为 : expected str, 字节或 os.PathLike 对象的文件,而不是列表