子供のモデルから親の関係にアクセスする

アント

Djangoプロジェクトでは、基本的に都市環境を表現したいと思います。いくつかの建物と通りの間を移動する可能性があります。これを実現するために、グラフ表現を選択しました。各ノードは部屋または道路の一部を表し、エッジは2つのノード間を移動する可能性を表します。

だから私はgraphs次のGraphNodeそしてEdgeモデルを持つ最初のアプリを持っています

class Graph(models.Model):
    label = models.CharField(max_length=200)

class Node(models.Model):
    graph = models.ForeignKey(Graph)

    # some methods

class Edge(models.Model):
    node_a = models.ForeignKey(Node, related_name='node_a')
    node_b = models.ForeignKey(Node, related_name='node_b')

    # some methods

これらの抽象的な概念に加えて、より具体的な概念を構築したいと思います。グラフは実際にはマップであり、ノードはマップ内で定義された座標を持つ通りまたは部屋になり、エッジは2つのノード間のパスを表します。2番目のcitiesアプリでは、基本的に次のものがあります。

from graphs.models import *

class Map(Graph):
    # ...

class Element(Node):
    # ...

class Path(Edge):
    # ...

ここで継承が邪魔になり、Djangoモデルの関係で自分自身を失っています。

1 / I既存濃縮したいForeignKeyとの間Element及びMap要素がマップの空間内の特定の場所を持っているので、座標(x、y)を追加します。しかし、それが可能かどうかはわかりません。新しい関係を定義する必要がありますか(ここで行われているよう)?建築的にはひどいことではないでしょうか。そして、それがやるべきことである場合、どうすればこの関係にデータ(つまり座標)を追加できますか?(私はm2mについて知っています-スルー、m2m関係は必要ありませんここで必要なものです)。

2 /継承によって、Element(あるがNode)に所属するMap(しているGraph)が、明らかに私はこれを行うことはできません。

>>> map = Map.objects.get(id=1)  # suppose it exists and has a few Elements
>>> map_elements = map.element_set().all()

AttributeError: 'Map' object has no attribute 'element_set'

Mapの親node_set使用して要素を見つけるようにDjangoに指示する方法はありますか?

それとも、私は間違った方向に進んでいて、この継承のアイデア全体を破棄する必要がありますか?別のアプリでのグラフ操作にバインドされたすべてのロジックを維持できるので、私はそれが非常に好きです。

lehins

これが私がそれを行う方法であり、接続されたグラフまたは切断されたグラフのコレクションを本当に説明することができます。その設定で発生する唯一の問題は、異なるグラフから2つのノードを接続することを妨げるものではなく、エラーになるはずです。

class Graph(models.Model):
    label = models.CharField(max_length=200)

class Node(models.Model):
    graph = models.ForeignKey(Graph)
    x = models.IntegerField()
    y = models.IntegerField()
    neighbors = models.ManyToMayField('self')

方向グラフも記述しようとしているのでない限り、実際のエッジモデルは必要ありません。その場合、次のようになります。

class Graph(models.Model):
    label = models.CharField(max_length=200)

class Node(models.Model):
    graph = models.ForeignKey(Graph)
    x = models.IntegerField()
    y = models.IntegerField()

class Edge(models.Model):
    start = models.ForeignKey(Node, related_name='start_node_set')
    end = models.ForeignKey(Node, related_name='end_node_set')

あなたは正しいです、この場合、継承を忘れてください、それはそれを使うのに非常に間違った場所です。また、実際の地図上でグラフを視覚化したい場合は、GoogleマップとGeoDjangoの使用をお勧めします。しかし、それは別の主題です:)

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

子供から親のネームスコープにアクセスする

分類Dev

nodejsマングースのモデル関係から別のモデル関係のアクセスにアクセスする方法

分類Dev

SQLAlchemy-親モデルを介して子モデルの列にアクセスする(1対1の関係)

分類Dev

AutomapperProject子供から親にアクセスするには

分類Dev

HasMany関係のBelongsToモデルにアクセスするLaravel

分類Dev

Ember 2.7モデルの継承-親に関連するモデルからのテンプレートのデータにアクセスする方法は?

分類Dev

親モデルのDjangoHTMLタグから情報にアクセスする方法

分類Dev

子の部分ビューから親ビューのモデルにアクセスできますか?

分類Dev

Djangoの親モデルから子モデルオブジェクトにアクセスする際の問題

分類Dev

NestJS / TypeORMの親の結合フィールドから関係IDにアクセスする方法

分類Dev

子供の中の子供からリストにアクセスする方法は?

分類Dev

AS3: 子供の子供の子供にアクセスする方法は?

分類Dev

親子関係モデルから自己子のオブジェクトを取得する方法

分類Dev

子ビュー内のチェックボックスの変更から親ビューモデルにアクセスする

分類Dev

子プロセスから親プロセスのメモリにアクセスする

分類Dev

親から子の状態にアクセスする

分類Dev

子供を親から他の子供にキャストする

分類Dev

Jenkinsのコンテナから親デーモンにアクセスする

分類Dev

Sails.jsの関連モデルからモデルの属性にアクセスする

分類Dev

Laravelモデルで独自の関係属性にアクセスする方法はありますか?

分類Dev

LaravelEloquent-子モデルから親モデルにアクセスすると子モデルが返されます

分類Dev

雄弁な関係:ルートモデルからすべての孫リソースにアクセスする

分類Dev

親から子供のクラス名を取得する

分類Dev

親コントローラーから子モデルにアクセスする

分類Dev

Laravel Eloquentモデル関係を介して子供たちの子供を取得する

分類Dev

LaravelEloquentのピボットテーブル「3番目のモデルの関係」にアクセスする

分類Dev

Golang:Goの構成モデルの「親」構造体のメソッドにある「子」構造体にアクセスする方法はありますか?

分類Dev

モデルからMVC5razowビューの子コレクションにアクセスする

分類Dev

子から親のビューモデルへのAureliaカスタム要素アクセスデータ

Related 関連記事

  1. 1

    子供から親のネームスコープにアクセスする

  2. 2

    nodejsマングースのモデル関係から別のモデル関係のアクセスにアクセスする方法

  3. 3

    SQLAlchemy-親モデルを介して子モデルの列にアクセスする(1対1の関係)

  4. 4

    AutomapperProject子供から親にアクセスするには

  5. 5

    HasMany関係のBelongsToモデルにアクセスするLaravel

  6. 6

    Ember 2.7モデルの継承-親に関連するモデルからのテンプレートのデータにアクセスする方法は?

  7. 7

    親モデルのDjangoHTMLタグから情報にアクセスする方法

  8. 8

    子の部分ビューから親ビューのモデルにアクセスできますか?

  9. 9

    Djangoの親モデルから子モデルオブジェクトにアクセスする際の問題

  10. 10

    NestJS / TypeORMの親の結合フィールドから関係IDにアクセスする方法

  11. 11

    子供の中の子供からリストにアクセスする方法は?

  12. 12

    AS3: 子供の子供の子供にアクセスする方法は?

  13. 13

    親子関係モデルから自己子のオブジェクトを取得する方法

  14. 14

    子ビュー内のチェックボックスの変更から親ビューモデルにアクセスする

  15. 15

    子プロセスから親プロセスのメモリにアクセスする

  16. 16

    親から子の状態にアクセスする

  17. 17

    子供を親から他の子供にキャストする

  18. 18

    Jenkinsのコンテナから親デーモンにアクセスする

  19. 19

    Sails.jsの関連モデルからモデルの属性にアクセスする

  20. 20

    Laravelモデルで独自の関係属性にアクセスする方法はありますか?

  21. 21

    LaravelEloquent-子モデルから親モデルにアクセスすると子モデルが返されます

  22. 22

    雄弁な関係:ルートモデルからすべての孫リソースにアクセスする

  23. 23

    親から子供のクラス名を取得する

  24. 24

    親コントローラーから子モデルにアクセスする

  25. 25

    Laravel Eloquentモデル関係を介して子供たちの子供を取得する

  26. 26

    LaravelEloquentのピボットテーブル「3番目のモデルの関係」にアクセスする

  27. 27

    Golang:Goの構成モデルの「親」構造体のメソッドにある「子」構造体にアクセスする方法はありますか?

  28. 28

    モデルからMVC5razowビューの子コレクションにアクセスする

  29. 29

    子から親のビューモデルへのAureliaカスタム要素アクセスデータ

ホットタグ

アーカイブ