1

私は 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 関係と中間モデルの追加フィールドを調べましたが、これを適切に行う方法がわかりません。

任意のポインタを喜んでいただければ幸いです。

ありがとう!

4

1 に答える 1

1

ゲームとロケーションの関係にリンクする場合は、中間モデルを作成する必要があります。これがサンプルコードです

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から、 simpleをaGameTypeと呼びます。GameLocationGame

于 2011-01-02T20:04:17.300 に答える