0

ManyToManyField to User を持つ Game というモデルがあります

class Game(models.Model):

    name = models.CharField(max_length=64, blank=False)
    image = models.URLField(blank=True)
    user = models.ManyToManyField(User, related_name='game', blank=True)
    port = models.IntegerField()

    def __unicode__(self):
        return self.name

そして、ビュー

class Dashboard(TemplateView):
    template_name = 'dashboard.html'

    def get(self, request, *args, **kwargs):
        kwargs['games'] = Game.objects.filter(user=request.user)
        return super(Dashboard, self).get(request, *args, **kwargs)

    def get_context_data(self, **kwargs):

        context = super(Dashboard, self).get_context_data(**kwargs)

        return context

これはすべて機能しますが、頭の中にある問題は、ゲームデータにアクセスする最良の方法は何かということです。私のテンプレートでは、次のいずれかを実行してゲーム データにアクセスできます。

1. User オブジェクトを次のように使用します

{% for g in user.game.all %}

2. または、ビューから明確に渡されたゲーム オブジェクトを使用する

{% for g in games %}

どちらも機能しますが、この種のことを行うための推奨される方法はありますか、それとも両方とも有効ですか?

両方が有効ではない場合、各メソッドの賛成と反対は何なのか疑問に思います

乾杯

リッチ

4

1 に答える 1

1

RelatedManager を使用してそれらにアクセスするのが最善だと思います。これは最初の例です{% for g in user.game.all %}。この目的のために組み込まれ、関連するモデルに簡単にアクセスできるように設計されています。私は専門家ではありませんが、あなたが尋ねたので、それが価値があるものについて私の意見を共有すると思いました...

于 2013-03-23T04:52:20.530 に答える