質問

私は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)

ところで。私はあなたの名前を変更します GameGameType そして、電話してください GameLocation 単純なa Game.

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top