Как настроить Django admin.TabularInline для таблицы с помощью ключа compount - PullRequest
0 голосов
/ 19 декабря 2009

По сути, у меня есть две таблицы: Page (PK = url) и PageProperty (PK = url + name).

Вот как я настроил свои модели:

class Page(model.Model):
    url   = model.CharField(primary_key=True, max_length=255, db_column='url')
    #.....

class PageProperty(model.Model):
    # table with compound key (url + name)
    url   = model.ForeignKey('Page', to_field='url', db_column='url', primary_key=True)
    name  = model.CharField(primary_key=True, max_length=20)
    value = model.TextField()

У меня настроен ModelAdmin, поэтому я могу оперативно редактировать PageProperty (s) со страницы. Это устаревшая база данных, и я знаю, что там много данных. Но администратор показывает только ОДИН из PagePropertys, а не все.

Ответы [ 2 ]

0 голосов
/ 08 января 2010

Поскольку считалось, что нецелочисленный первичный ключ был слишком большим по отношению к зерну, я в итоге согнулся и перенес схему, чтобы использовать автоматически генерируемое целое число pk для обеих таблиц. После этого все снова стало гладким, и «Инлайны» работали отлично.

0 голосов
/ 19 декабря 2009

Я думаю, вам может понадобиться применить параметр extra к вашему TabularInline. Пример:

class PagePropertyInline(admin.TabularInline):
    model = PageProperty
    extra = 3

Вы могли бы, вероятно, сделать немного магии, чтобы сделать количество дополнительных предметов динамическим (например, количество PageProperty объектов для данного Page, но я оставлю это на ваше усмотрение.

Я бы предложил продолжить чтение по Параметры InlineModelAdmin и Formsets .

...