我有两个来自遗留数据库的表,我想从Django站点访问。它们看起来像这样:
Table A
id (int, primary key)
name (string, unique)
...
Table B
id (int, primary key)
name
record_date
(name, record_date are unique together)
...
如何告诉我的Django模型表A
与B
上的A.name=B.name
有一对多的关系?常规ForeignKey
关系需要B
使用A.id
而不是name
,但我无法修改现有旧数据库的结构。
答案 0 :(得分:24)
try{
Properties props=new Properties();
props.put("user", username);
props.put("password", password);
props.put("maxIdle", maxidle);
props.put("maxActive", maxactive);
props.put("initialSize", initialsize);
Class.forName(driver);
DriverManager.getDriver(url);
simplecon = DriverManager.getConnection(url,props); //DriverManager.getConnection(url,username,password);
System.out.println("\n Simple JDBC simplecon ::"+simplecon);
System.out.println("\n\n<<<<<<< --- Connected to oracle DB By Simple JDBC Connection ------ >>>>>>\n\n");
}catch(Exception e1){
System.out.println("\n <<<<<<<<<<<< Inside Simple JDBC Connection Exception Block >>>>>>>>>>>>>>> ::");
e1.printStackTrace();
}
创建外键后,您可以按如下方式访问值和相关实例:
class B(models.Model):
name = models.ForeignKey(A, to_field="name", db_column="name")
答案 1 :(得分:1)
Django的模型.ForeignKey文档不是很清楚。如果您在数据库中反映了两个模型:
class Blockchain(models.Model):
symbol = models.CharField(max_length=50, primary_key=True, unique=True)
class Wallet(models.Model):
index = models.AutoField(primary_key=True)
wallet = models.CharField(max_length=100, null=True)
blockchain = models.ForeignKey(Blockchain, to_field="symbol", db_column="blockchain")
&#34; to_field&#34;实际上是ForeignKey模型的关键。
&#34; db_column&#34;是要在本地模型中重命名外键的字段的名称