管理模式下两个表中是否应显示OneToOneField关系?如果没有,你能强行吗?

时间:2015-11-10 16:04:08

标签: django django-models

我创建了两个类:

Class Transactions
    Account = models.CharField(max_length=50, unique=True)

class Meta_table(models.Model):
    Identifier = models.OneToOneField(Transaction, primary_key=True, to_field='Account', related_name='transactions')

在管理模式下,我是否应该能够在Meta_table表格视图中看到Transactions?反之亦然?

如果没有,我该如何编写代码,以便Meta_table显示Transactions

1 个答案:

答案 0 :(得分:0)

要在更改列表页面上显示字段,您需要将其包含在list_display选项中。由于您具有一对一字段,因此很容易在两个模型管理员中显示该字段。

class Meta_tableAdmin(admin.ModelAdmin):
    list_display = (..., 'identifier')
    list_select_related = ('identifier',)

admin.site.register(Meta_Admin, Meta_tableAdmin)

class TransactionsAdmin(admin.ModelAdmin):
    list_display = ('account', 'transactions', ...)
    list_select_related = ('transactions',)

admin.site.register(Transactions, TransactionsAdmin):

在这里,我们使用transactions,因为这是相关名称。由于反向关系从Transactions变为Meta_Table,因此最好使用related_name='metatable'之类的内容。

我们使用list_select_related来阻止额外的SQL查询。