如何在具有复合键的表上设置Django admin.TabularInline

时间:2009-12-18 21:01:10

标签: django django-models django-admin

我基本上有两个表: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设置,所以我可以从Page内联编辑PageProperty。它是一个遗留数据库,我知道那里有很多数据。但是Admin只显示了一个PagePropertys,而不是全部。

2 个答案:

答案 0 :(得分:0)

我认为您可能需要将extra选项应用于TabularInline。例如:

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

您可能会做一些神奇的事情来使额外项目的数量动态化(例如给定PageProperty的{​​{1}}个对象的数量,但我会将其留给您。

我建议您继续阅读InlineModelAdmin optionsFormsets

答案 1 :(得分:0)

因为我认为非整数主键太过分了,所以我最终屈服并移植模式,为两个表使用自动生成的整数pk。之后,一切都顺利航行,Inlines完美运作。