python - Django:无法包含 ManyToManyField 字段,因为手动指定了 'through' 模型

标签 python django

我在谷歌上搜索了很多次,发现只有一种解决方案可以为通过第三个模型建立关系的两个模型添加自定义中间模型。我按照建议照常申请,但仍然遇到这个问题:

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/

相关文章:

python - 使用 PEM 证书的 HTTPS 连接

python - 如何通过XML数据更快的更新MySQL?

python - 如何修复字符映射到未定义的 unicode 错误

python - 使用 django 实现一个计算请求的计数器

Django 1.8 & Django Crispy Forms : Is there a simple, 实现日期选择器的简单方法?

Python按多个条件排序

python - 如何在 pyplot 中绘制每个 x 值的 y 轴平均值

django - 在Django中使用逻辑服务静态文件(保持下载计数)

ajax - Django:在 ajax 调用中需要 login_required

javascript - 提交时隐藏表单 - Django 1.6