django - Django:创建查询集并向其中添加数据
问题描述
楷模:
class MyTeam(models.Model):
user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
match = models.ForeignKey(Match, on_delete=models.SET_NULL, null=True, related_name='match_set')
mega_league = models.ForeignKey(MegaLeague, on_delete=models.SET_NULL, null=True, blank=True, related_name='mega_league_set')
captain_first_team = models.ForeignKey(FirstTeamPlayer, on_delete=models.SET_NULL, null=True, blank=True, related_name="captain_second_team_set")
captain_second_team = models.ForeignKey(SecondTeamPlayer, on_delete=models.SET_NULL, null=True, blank=True, related_name="captain_second_team_set")
team_player_first_team = models.ManyToManyField(FirstTeamPlayer, blank=True, related_name="team_player_first_team_set")
team_player_second_team = models.ManyToManyField(SecondTeamPlayer, blank=True, related_name="team_player_second_team_set")
首先,我需要在一个字段中添加这些captain_first_team
& captain_second_team
(例如在一个字段中添加FirstTeamPlayer
和SecondTeamPlayer
)。如何?
意见:
def add_to_my_team_from_team_create(request, match_id):
match = get_object_or_404(Match, pk=match_id)
my_team = MyTeam.objects.create(match=match, user=request.user)
return redirect('team_create', match.pk, my_team.pk)
def team_create(request, match_id, team_id):
match = get_object_or_404(Match, pk=match_id)
my_team = get_object_or_404(MyTeam, pk=team_id)
first_team_player = match.first_team.first_team_player.all()
second_team_player = match.second_team.second_team_player.all()
context = {
'match': match,
'my_team': my_team,
'first_team_player': first_team_player,
'second_team_player': second_team_player,
}
return render(request, 'main/team_create.html', context=context)
def add_first_team_player(request, match_id, team_id, player_id):
match = get_object_or_404(Match, pk=match_id)
my_team = get_object_or_404(MyTeam.objects.filter(user=request.user, match=match.pk), pk=team_id)
first_team_player = get_object_or_404(match.first_team.first_team_player, pk=player_id)
my_team.team_player_first_team.add(first_team_player)
return redirect('team_create', match.pk, my_team.pk)
def remove_first_team_player(request, match_id, team_id, player_id):
match = get_object_or_404(Match, pk=match_id)
my_team = get_object_or_404(MyTeam.objects.filter(user=request.user, match=match.pk), pk=team_id)
first_team_player = get_object_or_404(match.first_team.first_team_player, pk=player_id)
my_team.team_player_first_team.remove(first_team_player)
return redirect('team_create', match.pk, my_team.pk)
在视图中,首先我创建了一个MyTeam
usingadd_to_my_team_from_team_create
函数,然后在字段上添加数据 using add_first_team_player
,我也可以使用remove_first_team_player
. 但我需要相反的。这意味着,我需要添加字段,然后当我在模板中按下保存按钮时,它将保存在MyTeam
.
team_create 模板:
{% for first_team_player in first_team_player %}
<tr id="wk">
<td>
<img src="{{ first_team_player.player_image.url }}">
<div>
{{ first_team_player.player_name }} <br>
{{ match.first_team.name }}
</div>
</td>
<td>
{% if first_team_player in my_team.team_player_first_team.all %}
<a href="{% url 'remove_first_team_player' match.pk my_team.pk first_team_player.pk %}"><button type="button" class="btn btn-danger btn-sm">Remove -</button></a>
{% else %}
<a href="{% url 'add_first_team_player' match.pk my_team.pk first_team_player.pk %}"><button type="button" class="btn btn-primary btn-sm">Add +</button></a>
{% endif %}
</td>
</tr>
{% endfor %}
<a href=""><button type="button" class="btn btn-primary btn-sm">Save</button></a>
在模板中,当我按下Add +
按钮时,此播放器添加到MyTeam
模型中,当按下Remove -
按钮时,此播放器从该模型中删除。
现在我的问题是关于 2 点:
我想在这里创建一些逻辑
MyTeam
。我需要来自 1 支球队的最多 7 名球员(当添加最大球员时,Add +
按钮将禁用)和来自另一支球队的其他球员,总球员将是 11(当总球员添加时,Add +
按钮将禁用所有球员)。1,Save
按钮保持禁用状态,当11个玩家完成时MyTeam
,它将启用并按下这些玩家将保存到MyTeam
。这样,一个 QuerySet 就会生成。如果我创建
MyTeam
第一个并在其字段上添加数据,那么它可能是一个空团队。但在这里我不能制造任何空队。所以,首先我需要在字段上添加数据,然后当按下Save
按钮时,它将创建一个包含所有数据的新团队。
我该如何解决这2个问题?
为了更好地理解,我想像这个 团队一样创造dream11 。请在调查给定的链接后帮助我详细说明..
解决方案
推荐阅读
- node.js - 如何重定向到 node.js 中同一文件夹中的不同 ejs 文件
- python - 如何将 for 循环的输出转换为 Python 中的单个字符串列表?
- java - Java:对象池和哈希集
- reactjs - 如何使用 Material-ui 和 GraphQL 制作动态标签
- typescript - 编译为 umd 时如何在打字稿中修复车把“找不到模块”
- reactjs - 我的组件正在创建 TypeError: Cannot read property 'click' of null
- java - 滚动时列表视图中的开关状态不稳定
- php - 如何使用 GET 方法选择正确的表格来显示 ChartJS 图形?
- html - CSS grid-column-start 根据屏幕大小制作全宽
- c++ - C++ // 尝试重写工作代码以包含我的函数