我google了很多次,发现只有一个解决方案,通过第三个模型为两个模型添加自定义中间模型.我像往常一样应用了建议,但仍然遇到这个问题:
不能包含ManyToManyField字段'terms',因为'terms'手动指定'through'模型
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")
Run Code Online (Sandbox Code Playgroud)
@admin.register(Term)
class AdminTerm(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['name']})
]
@admin.register(Post)
class AdminPost(admin.ModelAdmin):
fieldsets = [
(None, {'fields':['title', 'content', 'terms']})
]
Run Code Online (Sandbox Code Playgroud)
kar*_*ikr 15
您必须更改管理员以包含InlineModelAdmin对象
所以,改变
class AdminPost(admin.ModelAdmin):
fieldsets = [
(None, {'fields':['title', 'content', 'terms']})
]
Run Code Online (Sandbox Code Playgroud)
至
class TermInlineAdmin(admin.TabularInline):
model = Post.terms.through
class AdminPost(admin.ModelAdmin):
fieldsets = [
(None, {'fields':['title', 'content']})
]
inlines = (TermInlineAdmin,)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3921 次 |
| 最近记录: |