多くの関係と多くのdjangoとの関係?
-
14-10-2019 - |
質問
私はDjangoとOOに比較的新しいので、明らかな何かが欠けているかもしれませんが、以下をモデル化する方法に頭を包むことはできません。
私には場所があります。
私はゲームを持っています。
各場所には必要な数のゲームがあり、ゲームは複数の場所にあります(これらは、特定のインスタンスではなく、ゲームタイトルである「モノポリー」のようなゲームです)。
これは、M2M関係でモデル化するのに十分簡単です。
class Location(models.Model):
name = models.CharField(max_length=300)
city = models.CharField(max_length=300)
[ etc etc ]
games = models.ManyToManyField('Game', related_name='locations', blank=True)
class Game(models.Model):
name = models.CharField(max_length=300)
manufacturers = models.ForeignKey('Manufacturer')
[ etc etc ]
また、通常のDjangoユーザーモデルもあります。
さて、私がこの関係に追加しようとしているのは、スコアの概念です。
ユーザーは、特定の場所にあるゲームのスコアを入力できるはずです。その後、たとえば、各ゲームの各ゲームの上位10スコアを、すべての場所でゲームのグローバルなトップ10のスコアを表示できるはずです。
したがって、基本的には、ユーザー、ゲーム、場所にリンクされたスコアがあるはずです。
関係そのものと何らかの関係の関係であるべきだと思われます。私はM2M関係と仲介モデルで余分なフィールドを見ましたが、これを適切に行う方法はわかりません。
どんなポインターも喜んで感謝します。
ありがとう!
解決
ゲームと場所の間の免除にリンクしたい場合は、仲介モデルを作成する必要があります。これがサンプルコードです
class Location(models.Model):
name = models.CharField(max_length=300)
city = models.CharField(max_length=300)
[ etc etc ]
games = models.ManyToManyField('Game', related_name='locations', blank=True, through='GameLocation')
class Game(models.Model):
name = models.CharField(max_length=300)
manufacturers = models.ForeignKey('Manufacturer')
[ etc etc ]
class GameLocation(models.Model):
game = models.ForeignKey(Game)
location = models.ForeignKey(Location)
# some other filed like for example date
class Score(models.Model):
user = models.ForeginKey('user')
gamelocation = models.ForeginKey('GameLocation')
score = models.DecimalField(max_digits=5, decimal_places=2)
ところで。私はあなたの名前を変更します Game
に GameType
そして、電話してください GameLocation
単純なa Game
.
所属していません StackOverflow