django管理列表\显示外键id而不加入

django管理列表\显示外键id而不加入,django,django-models,django-admin,Django,Django Models,Django Admin,由于CDR表Call和Order中有2个外键,但要在列表显示中显示这些ID,它会与Call和Order表连接,并且会导致查询速度变慢,因为这3个表都有巨大的数据行 有没有办法不用连接就解决它 当我在列表显示中使用call\uu id和order\uu id时,它会引发配置不正确,如果没有

由于CDR表Call和Order中有2个外键,但要在列表显示中显示这些ID,它会与Call和Order表连接,并且会导致查询速度变慢,因为这3个表都有巨大的数据行

有没有办法不用连接就解决它


当我在列表显示中使用call\uu id和order\uu id时,它会引发
配置不正确
,如果没有\uu repr\uu对象。

外键的id作为
\u id
属性提供,因此您可以通过自定义方法显示id:

class CDR(models.Model):
    order = models.ForeignKey(Order)
    call = models.ForeignKey(Call)
    start_date = models.DateTimeField(auto_now_add=True)
    end_date = models.DateTimeField(null=True)
    remark = models.CharField(max_length=200, null=True)

class CDRAdmin(admin.ModelAdmin):
    search_fields = ('order__id',)
    raw_id_fields = ('call', 'order')
    list_display = ('call', 'order', 'start_date', 'remark')

    models = CDR
谢谢,我正在做obj..id,它会对每一行和我遇到的同一个obj进行查询。作为解决方案。
class CDRAdmin(admin.ModelAdmin):

    list_display = ('call_id_display', 'order_id_display', 'start_date', 'remark')

    def call_id_display(self, obj):
       return obj.call_id
    call_id_display.short_description = 'Call ID'

    def order_id_display(self, obj):
       return obj.order_id
    order_id_display.short_description = 'Order ID'