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)
这就是我实际拥有的,我不断得到:例外:没有外国钥匙