Джанго заказал ManyToManyField в интерфейсе администратора - PullRequest
3 голосов
/ 16 ноября 2009

У меня есть устаревшая база данных с таблицами для документов и авторов. Третья таблица определяет упорядоченные отношения «многие ко многим» между документами и авторами, используя внешние ключи к документам и авторам, и целое число, чтобы указать порядок авторов для данного документа.

Используя Django 1.1.1 (или SVN), есть ли способ отредактировать авторов документа и их порядок на странице администратора?

Ответы [ 2 ]

5 голосов
/ 16 ноября 2009

Это быстро и немного грубо, но это должно приблизить вас (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

0 голосов
/ 16 ноября 2009

это тоже может вам помочь - в Django есть утилита для построения моделей для устаревших баз данных.

Я создал модель для базы данных MediaWiki, используя ее. Он понимает большинство вещей правильно, но вам нужно немного настроить модели.

...