Отношения в Django Admin - PullRequest
       14

Отношения в Django Admin

1 голос
/ 10 августа 2009

Я действительно запутался в отношениях между базами данных «многие ко многим», поэтому кто-нибудь может уточнить, как мне этого добиться?

Мне нужна таблица «Тегов» (как в словах тегов) и таблица для «Записи», такая, что во многих «Записи» может соответствовать многим словам тега.

Прямо сейчас у меня есть такие модели:

# 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, чтобы я мог добавить теги при создании новой записи?

Ответы [ 2 ]

3 голосов
/ 14 августа 2009

То, что вам нужно, это использование функции through моделей:

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)
0 голосов
/ 10 августа 2009

Вам понадобится что-то вроде:

# 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) 

(Обратите внимание, этот код был написан в браузере!)

...