13

ファイルシステム内のノードを表すテーブルを持つレガシーデータベースがあります。A、B、C など、いくつかのタイプのノードがあり、異なるタイプには異なるプロパティがあります。現在のデータベース設計では、ノードに関する情報を保持するテーブルが 1 つあります。ノードがタイプ A の場合、タイプ A に関連するフィールドのみが設定されます。ここで、タイプ A、B、C をモデルとして表現したいと思います。発生する問題は次のとおりです。

  1. 私はそのような動作をしたいと思います.3つのタイプすべてに name プロパティがあります。ファイルシステム内のすべてのノードを名前プロパティでフィルタリングし、適切なタイプのオブジェクトのリストを取得したいと考えています。

  2. データベース内の外部キーとして表される親リンクとしての各ノードなので、おそらく何らかの形の継承が行われるはずです。

ジャンゴで可能ですか?

4

2 に答える 2

8

はい、可能です。次に例を示します。

models.py

from django.db import models

# Create your models here.
class NodeA(models.Model):

    name_a = models.CharField(max_length=75, blank=True, null=True)

    class Meta:
        db_table = 'Nodes'
        managed = False

class NodeB(models.Model):

    name_b = models.CharField(max_length=75, blank=True, null=True)

    class Meta:
        db_table = 'Nodes'
        managed = False

class NodeC(models.Model):

    name_c = models.CharField(max_length=75, blank=True, null=True)

    class Meta:
        db_table = 'Nodes'
        managed = False

データベース スキーマ (SQLITE)

 Nodes {
    id        integer   primary key
    name_a    TEXT
    name_b    TEXT
    name_c    TEXT }

コンセプトの証明

import NodeA, NodeB, NodeC

a = NodeA()
a.name_a = 'Node A'
a.save()

b = NodeB()
b.name_b = 'Node B'
b.save()

c = NodeC()
c.name_c = 'Node C'
c.save()

これにより、次が生成されます。

id        name_a        name_b        name_c
1         Node A
2                       Node B
3                                     Node C
于 2012-12-11T16:06:12.530 に答える