我在谷歌上搜索了很多次,发现只有一种解决方案可以为通过第三个模型建立关系的两个模型添加自定义中间模型。我按照建议照常申请,但仍然遇到这个问题:
can't include the ManyToManyField field 'terms' because 'terms' manually specifies a 'through' model
模型.py
class Term(models.Model):
class Meta:
db_table = "tbl_term"
name = models.CharField(max_length=32)
class Post(models.Model):
class Meta:
db_table = "tbl_post"
title = models.CharField(max_length=96)
content = models.TextField()
terms = models.ManyToManyField("Term", through="TermRelation")
class TermRelation(models.Model):
class Meta:
db_table = "tbl_term_relation"
term = models.ForeignKey("Term", db_column="id_term")
post = models.ForeignKey("Post", db_column="id_post")
管理员.py
@admin.register(Term)
class AdminTerm(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['name']})
]
@admin.register(Post)
class AdminPost(admin.ModelAdmin):
fieldsets = [
(None, {'fields':['title', 'content', 'terms']})
]
最佳答案
您必须更改管理员以包含 InlineModelAdmin
objects
所以,改变
class AdminPost(admin.ModelAdmin):
fieldsets = [
(None, {'fields':['title', 'content', 'terms']})
]
到
class TermInlineAdmin(admin.TabularInline):
model = Post.terms.through
class AdminPost(admin.ModelAdmin):
fieldsets = [
(None, {'fields':['title', 'content']})
]
inlines = (TermInlineAdmin,)
关于python - Django:无法包含 ManyToManyField 字段,因为手动指定了 'through' 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20201612/