【发布时间】:2020-10-02 18:40:55
【问题描述】:
我正在创建一个用于举办板球锦标赛的项目。我在其中创建了 3 个应用程序:家庭、锦标赛和团队。添加锦标赛后,当进入锦标赛的详细视图时,我可以将团队添加到锦标赛中。我的Team 模型对我的Tournament 模型有一个 ForeignKey,我的Tournament 模型对我的User 模型有一个 ForeignKey(内置 django 用户模型)。创建团队时,我想为特定锦标赛保存团队。我不明白如何访问确切的锦标赛并仅为该锦标赛保存球队。
我的比赛详情 html:
{% extends 'menu.html' %}
{% block content %}
<div class="row">
<div class="col-8">
<table class="table table-bordered table-hover">
<tr>
<th scope="col">Match between</th>
<th scope="col">Winner</th>
</tr>
{% for match in match_list %}
<tr>
<td>
{{ match.team1.name }} vs {{ match.team2.name }}
</td>
<td>
{% if match.winner %}
{{ match.winner.name }}
{% else %}
TBD
{% endif %}
</td>
</tr>
{% endfor %}
</table>
</div>
<div class="col-4">
{% if teamscount < tournament.no_of_teams %}
<button class="btn btn-primary" onclick="window.location.href='{% url 'teams:addteam' %}'">Add Team</button>
{% endif %}
</div>
</div>
{% endblock content %}
我在锦标赛应用程序中的 urls.py 文件:
from django.urls import path, include
from . import views
app_name='tournaments'
urlpatterns = [
path('all/', views.TournamentListView.as_view(), name='all'),
path('create/', views.TournamentCreateView.as_view(), name='create'),
path('view/<int:pk>/', views.TournamentDetailView.as_view(), name='detail'),
]
我在团队应用中的 urls.py 文件:
from django.urls import path
from . import views
app_name="teams"
urlpatterns = [
path('new/', views.TeamCreateView.as_view(), name="addteam"),
]
我在团队应用中的 views.py 文件:
from django.shortcuts import render
from django.views.generic import CreateView
from .models import Team
from django.urls import reverse_lazy
from tournament.models import Tournament
class TeamCreateView(CreateView):
model = Team
fields = ['name', 'no_of_players',]
success_url = reverse_lazy('tournaments:all')
success_message = "Tournament Created!!"
def get_form(self):
form = super().get_form()
return form
def form_valid(self, form):
print('form_valid called')
object = form.save(commit=False)
object.tournament = Tournament.objects.filter(user = self.request.user)
object.save()
return super(TeamCreateView, self).form_valid(form)
我的创建团队 html 文件:
{% extends 'menu.html' %}
{% load crispy_forms_tags %}
{% block content %}
{% load bootstrap4 %}
{% bootstrap_css %}
{% bootstrap_javascript jquery='full' %}
{{ form.media }}
<form
action="{% url 'teams:addteam' %}"
method="post"
id="upload_form"
enctype="multipart/form-data"
>
{% csrf_token %} {{ form|crispy }}
<div class="form-group">
<button class="btn btn-outline-info" type="submit">Create</button>
<input class="btn btn-danger" type="submit" onclick="window.location='{% url 'tournaments:all' %}' ; return false;" value="Cancel" />
</div>
</form>
{% endblock content %}
如何将这支球队保存到特定的锦标赛模型中,或者我是否需要更改我设计函数和类的方式?
【问题讨论】:
标签: python-3.x django django-models django-forms django-views