Django在管理界面中订购了ManyToManyField

时间:2009-11-16 15:45:20

标签: django django-admin

我有一个遗留数据库,其中包含文档和作者的表格。第三个表定义了文档和作者之间有序的多对多关系,使用文档和作者的外键以及指定给定文档的作者顺序的整数。

使用Django 1.1.1(或SVN),有没有办法在管理页面中编辑文档作者及其顺序?

2 个答案:

答案 0 :(得分:5)

这很快,有点粗糙,但它应该让你接近(r)。

from django.db import models
from django.contrib import admin

class Document(models.Model):
    name = models.CharField(max_length = 128)

    def __unicode__(self):
        return self.name

class Author(models.Model):
    name = models.CharField(max_length = 128)
    document = models.ManyToManyField(Document, through = 'Foo')

    def __unicode__(self):
        return self.name

class Foo(models.Model):
    document = models.ForeignKey(Document)
    author = models.ForeignKey(Author)
    author_order = models.IntegerField()

class FooInline(admin.TabularInline):
    model = Foo

class DocumentAdmin(admin.ModelAdmin):
    inlines = [ FooInline ]

admin.site.register(Author)
admin.site.register(Document, DocumentAdmin)

http://docs.djangoproject.com/en/dev/topics/db/models/#intermediary-manytomany http://docs.djangoproject.com/en/dev/ref/contrib/admin/#inlinemodeladmin-objects

答案 1 :(得分:0)

这也可以帮助你 - 在Django中为there is some utility构建旧数据库的模型。

我使用它为mediawiki数据库构建了一个模型。大部分事情都是正确的,但你需要稍微调整模型。