Django在管理界面中订购了ManyToManyField
我有一个遗留数据库,其中包含用于文档和作者的表。第三个表定义文档和作者之间的有序多对多关系,使用文档和作者的外键以及整数指定给定文档的作者顺序Django在管理界面中订购了ManyToManyField,django,django-admin,Django,Django Admin,我有一个遗留数据库,其中包含用于文档和作者的表。第三个表定义文档和作者之间的有序多对多关系,使用文档和作者的外键以及整数指定给定文档的作者顺序 使用Django 1.1.1(或SVN),有没有办法在管理页面中编辑文档作者及其顺序?这很快而且有点粗糙,但应该可以让您接近(r) 这可能也会帮助您在Django中为遗留数据库构建模型 我已经使用它为mediawiki数据库构建了一个模型。大多数事情都做对了,但是你需要稍微调整一下模型。我以前尝试过,但是在文档管理页面中只有一行/条目的作者显示出来进行
使用Django 1.1.1(或SVN),有没有办法在管理页面中编辑文档作者及其顺序?这很快而且有点粗糙,但应该可以让您接近(r) 这可能也会帮助您在Django中为遗留数据库构建模型
我已经使用它为mediawiki数据库构建了一个模型。大多数事情都做对了,但是你需要稍微调整一下模型。我以前尝试过,但是在文档管理页面中只有一行/条目的作者显示出来进行编辑,即使我在FooInline类中指定了extra=3。我刚刚测试过这个(w/1.1.1),并且在添加新文档时可以选择最初附加3个作者,编辑文档时还有3个。不确定它会在哪里对您不利,但它似乎对我很好。出于好奇,您是否尝试过inspectdb来查看您得到了什么模型表示()。好的,我已经找到了差异的原因。在我的旧数据库中,Foo表不包含“id”主键列。相反,它是在所有三列上键入的,第一个键是doc id,然后是author id,然后是order。当我在一个字段上输入primary\u key=True时,只有一个条目显示在管理页面中。输出的model inspectdb类似于我手工编码的条目:class DocumentAuthor(models.model):doc\u id=models.IntegerField(primary\u key=True)author\u id=models.IntegerField(primary\u key=True)order\u presentation=models.IntegerField(primary\u key=True)类Meta:db\u table=u'document\u author'
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)