django - 您不能更改 m2m 字段或从 m2m 字段更改或通过 =onmn2m 字段添加或删除
问题描述
这是什么错误:您无法更改 m2m 字段或从 m2m 字段更改或通过=on m2m 字段添加或删除
Class post(models.Model):
Title=models.CharField(max_length=50)
Class cat_child(midels.Model):
name=models.CharField(max_length=50)
post=models.ManyToManyField(Post)
cat_parent=models.ForeignKey('Cat_Parent',on_delete=models.CASCADE)
Class cat_parent(models.Model):
名称=models.CharField(max_length=50)
这是为什么?
解决方案
Django默认创建一个中间表,但是如果你想手动指定一个你必须通过ManyToManyField来完成(指中间表)
class Category(models.Model):
Name=models.CharField(max_length=50)
post=models.ManyToMany(Post, through='PostCat')
然后像以前一样指定中间表。
唯一的变化是through = 'PostCat'
在 ManyToMany 中添加 PosCat 是引用的中间表。
您可以在文档中找到更多信息,但基本上这就是解决方案: https ://docs.djangoproject.com/en/2.1/topics/db/models/
推荐阅读
- c - 为什么在指定 CLONE_THREAD 标志时克隆函数返回 -1?
- django - Vue.js + Axios 没有分配响应
- apache-flink - 无论状态后端如何,状态是否都保存在 TaskManager 的内存中?
- database - Cassandra等数据库中对Bloom Filter的需求
- java - Java:在 Java Swing 中实现服务方法
- python - 自动 Salesforce 登录
- java - 无法将已编译的 java avro 文件导入 Scala 代码库
- android - 上面有形状的android特殊按钮主题
- spring - 无法导入 org.springframework.test.context.ActiveProfiles;
- api - REST API 子端点的命名约定