Python 如何更改Django中外键的db_列名?

Python 如何更改Django中外键的db_列名?,python,django,foreign-keys,Python,Django,Foreign Keys,如何更改Django中外键的db_列 A类(型号.型号): it_id=models.CharField('it id',最大长度=10) B类(型号.型号): it\u id=models.ForeignKey('A',related\u name='item',on\u delete=models.PROTECT,db\u column='it\u id') 当我调用对象时 >>B.objects.all().values() 它是“It_id_id” 如何将“it\u id”更改为“

如何更改Django中外键的db_列


A类(型号.型号):
it_id=models.CharField('it id',最大长度=10)
B类(型号.型号):
it\u id=models.ForeignKey('A',related\u name='item',on\u delete=models.PROTECT,db\u column='it\u id')
当我调用对象时

>>B.objects.all().values()
它是“It_id_id”


如何将“it\u id”更改为“it\u id”?

这与数据库列的名称无关,但与Django字段的名称有关。Django将自动为
ForeignKey
s添加
..\u id
后缀,然后存储引用对象的主键。因此,
ForeignKey
的名称以
…\u id
结尾是毫无意义的。有关更多信息,请参阅

因此,您可以将模型更改为:

class B(models.Model):
    it = models.ForeignKey(
        'A',
        related_name='item',
        on_delete=models.PROTECT
    )

谢谢你的建议。我还有一个关于联接表的问题。我想把表B和A连接起来,所以我试图命令“B.objects.select_related('it')”。但是我无法得到连接的表。。我如何用A连接表B?@DonyNoh:它将使A
连接
,由此产生的
B
对象在访问
某些对象时不会进行额外查询。它
,因为这已经通过连接表检索到了。如果要执行内部联接,可以使用
B.objects.filter(它\uu isnull=False)
进行筛选,然后再次使用
。选择\u related
以有效地“预加载”相关对象。
from django.db.models import F

B.objects.values(it_id=F('it_id_id'))