Django models Django管理中的关系

Django models Django管理中的关系,django-models,django-admin,many-to-many,Django Models,Django Admin,Many To Many,我真的对多对多数据库关系感到困惑,所以有人能澄清一下我将如何实现这一点吗 我需要一个“标签”表(如标签词)和一个“条目”表,例如在许多“条目”可以对应于许多标签词 现在我有这样的模型: # models.py class Tags(models.Model): tag = models.CharField(max_length=255) entry = models.ManyToManyField(Entry) class Entry(models.

我真的对多对多数据库关系感到困惑,所以有人能澄清一下我将如何实现这一点吗

我需要一个“标签”表(如标签词)和一个“条目”表,例如在许多“条目”可以对应于许多标签词

现在我有这样的模型:

# models.py
class Tags(models.Model):
    tag         = models.CharField(max_length=255)
    entry       = models.ManyToManyField(Entry)

class Entry(models.Model):
    entry       = models.CharField(max_length=255)
    description = models.TextField()

现在我很困惑,我该如何设置admin.py,以便在创建新条目时添加标记?

您需要以下内容:

# admin.py

from django.contrib import admin
from models import *

class TagsInline(admin.TabularInline):
    model = Tag
    extra = 1

class EntryAdmin(admin.ModelAdmin):
    inlines = (TagsInline, )

admin.site.register(Entry, EntryAdmin)
admin.site.register(Tag) 

(注意,此代码是在浏览器中编写的!)

您需要的是使用型号的
功能:

class Tag(models.Model):
    tag         = models.CharField(max_length=255)
    entry       = models.ManyToManyField(Entry, through='TaggedEntries')

class Entry(models.Model):
    entry       = models.CharField(max_length=255)
    description = models.TextField()

class TaggedEntries(models.Model):
    entry = models.ForeignKey(Entry)
    tag = models.ForeignKey(Tag)
现在在管理员中使用该模型:

class TagsInline(admin.TabularInline):
    model = TaggedEntries
    extra = 1

class EntryAdmin(admin.ModelAdmin):
    inlines = (TagsInline, )

admin.site.register(Entry, EntryAdmin)
admin.site.register(Tag)

这就是我实际拥有的,我不断得到:例外:没有外国钥匙