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