у меня есть поле выбора. Я хочу в views.py вот так; Как я могу сделать?
if gametype == 1:
template='xxx.html'
if gametype == 2:
template='xxx1.html'
просмотры.py
def game_detail(request,tournamentslug,slug,gameslug):
game=get_object_or_404(Model,tournament__slug=tournamentslug,slug=slug,game__slug=gameslug)
context = {
'game':game,
}
return render(request,'esports/lolgame.html',context)
модели.py
class Model(models.Model):
type_tvt = 1
type_pvp = 2
type_royale=3
types = (
(type_tvt, 'T'),
(type_pvp, 'P'),
(type_royale,'R'),
)
gametype=models.SmallIntegerField(choices=types)
Проблема решена





Предполагая, что у вас есть подробное представление на основе классов (и модель названа Game для здравомыслия, а не Model, как в вашем примере),
class GameView(generic.DetailView):
model = Game
def get_template_names(self):
if self.object.gametype == Game.type_tvt:
return ['xxx.html']
elif self.object.gametype == Game.type_pvp:
return ['xxx2.html']
elif self.object.gametype == Game.type_royale:
return ['xxx3.html']
raise ValueError('invalid game type')
справится с задачей — или упростить использование диктофона,
class GameView(generic.DetailView):
model = Game
template_names = {
Game.type_tvt: 'xxx.html',
Game.type_pvp: 'xxx2.html',
Game.type_royale: 'xxx3.html',
}
def get_template_names(self):
return [self.template_names[self.object.gametype]] # may raise KeyError
Обновлено: для функционального представления, как в отредактированном вопросе,
template_names = {
Model.type_tvt: "xxx.html",
Model.type_pvp: "xxx2.html",
Model.type_royale: "xxx3.html",
}
def game_detail(request, tournamentslug, slug, gameslug):
game = get_object_or_404(
Model,
tournament__slug=tournamentslug,
slug=slug,
game__slug=gameslug,
)
context = {"game": game}
template_name = template_names[game.gametype]
return render(request, template_name, context)
представление на основе функции def game_detail (запрос, турниры, слаг, игры): game = get_object_or_404 (модель, турнир__ slug = турниры, slug = слаг, game__ slu, g = gameslug)
Пожалуйста, добавьте свой текущий код просмотра в свой вопрос, а не в комментарий.
Добавлен пример FBV. :)
Похоже, ваш пост в основном код; пожалуйста, добавьте некоторые подробности.