gpt4 book ai didi

mysql - django 连接两个唯一的外键

转载 作者:行者123 更新时间:2023-11-30 00:19:40 24 4
gpt4 key购买 nike

我被这个问题困住了。我有两个表,例如:

TABLE1 (CODE,SUBCODE,DESCR,FIELD4,FIELD5,...)

TABLE2 (ID1,ID2,CODE,SUBCODE,FIELD5,FIELD6,...)

模型如下:

class Table1(models.Model):

code = models.IntegerField(primary_key=True, db_column='CODE') # Field name made lowercase.

subcode = models.IntegerField(primary_key=True, db_column='SUBCODE') # Field name made lowercase.

description = models.CharField(db_column='DESCR', max_length=30) # Field name made lowercase.

field4 = models.CharField(db_column='FIELD4', max_length=8) # Field name made lowercase.

field5 = models.CharField(db_column='FIELD5', max_length=30) # Field name made lowercase.

(...)

class Meta:

managed = False

db_table = 'TABLE1'

unique_together = (("code", "subcode"),)


class Table2(models.Model):

id1 = models.IntegerField(primary_key=True, db_column='ID1') # Field name made lowercase.

id2 = models.IntegerField(primary_key=True, db_column='ID2') # Field name made lowercase.

code = models.IntegerField(db_column='CODE') # Field name made lowercase.<br/><br/>
subcode = models.IntegerField(db_column='SUBCODE') # Field name made lowercase.

field5 = models.CharField(db_column='FIELD5', max_length=32) # Field name made lowercase.

field6 = models.FloatField(db_column='FIELD6') # Field name made lowercase.

code_fk = models.ForeignKey(Table1, db_column='CODE', to_field='code', related_name='code_fk')

subcode_fk = models.ForeignKey(Table1, db_column='SUBCODE', to_field='subcode', related_name='subcode_fk')

class Meta:

managed = False

db_table = 'TABLE2'

unique_together = (("id1", "id2"),)

如果我像这样进行简单的检索:

Table2.objects.all()

有一种方法可以在模板中显示每行返回的字段代码、子代码以及从其他表中获取的相关描述?

基本上我想做一个简单的

SELECT B.CODE, B.SUBCODE, A.DESCR
FROM TABLE1 A JOIN TABLE2 B
ON A.CODE = B.CODE AND A.SUBCODE = B.SUBCODE

我必须如何修改我的模型才能做到这一点?

最佳答案

Django does not yet support multi-column primary keys ...这意味着模型上只有一个字段应标记为 primary_key=True

如果您无法使您的数据库架构适应 Django,这就会出现问题(我猜这可能是您的情况,因为您有 management=False)

您可以尝试使用这样的模块:
https://github.com/simone/django-compositekey
(我没有亲自尝试过)

关于mysql - django 连接两个唯一的外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23335780/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com