需要帮助在视图中创建模型

时间:2016-06-06 08:16:25

标签: python django

models.py

class Match(models.Model):


    match_name = models.CharField(max_length=100)
    player = models.CharField(max_length=100, choices=match_game, default=2)
    time_start = models.DateTimeField(blank=True, default=None, null=True)
    match_finished = models.BooleanField(default=False)

    def get_absolute_url(self):
        return reverse('match:details', kwargs={'pk': self.pk})

    def __str__(self):
        return self.match_name

class PlayerSignup(models.Model):
    current_player = models.ForeignKey(User)
    signup = models.ForeignKey(Match)

urls.py

 url(r'^create/add/$', views.MatchCreate.as_view(), name='match-add'),
 url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(template_name = 'match/bracket_detail.html'),  name='details'),
 url(r'^search/$', views.IndexView.as_view(template_name = 'match/bracket.html'), name='search'),
 url(r'(?P<pk>[0-9]+)/$', views.PlayerSign, name='join')

views.py

def PlayerSign(request):
    model = PlayerSignup.objects.all()
    match = Match.objects.get(pk=Match.pk)

    joinmatch = PlayerSignup(current_player=request.user, signup=match)
    joinmatch.save()

    return render(request, 'match/bracket_detail.html', {'model': model })

模板

 <a href="{% url 'match:join' match.pk%}">Join Match</a>

当一个人点击“加入匹配”链接时,我希望它创建一个PlayerSignup模型并将其链接到他们所在的当前匹配。

当我点击加入匹配链接时没有任何反应,没有新模型,没有错误

1 个答案:

答案 0 :(得分:2)

首先,尝试编辑此声明

def PlayerSign(request):
    ...
    match = Match.objects.get(pk=Match.pk)

def PlayerSign(request, pk):
    ...
    match = Match.objects.get(pk=pk)

由于URL中有一个名为pk的请求参数,因此应将此参数传递给查询方法。

其次,查看您的网址定义

url(r'^(?P<pk>[0-9]+)/$', views.DetailView.as_view(template_name = 'match/bracket_detail.html'),  name='details'),
url(r'(?P<pk>[0-9]+)/$', views.PlayerSign, name='join')

更改为

url(r'^match_detail/(?P<pk>[0-9]+)/$', views.DetailView.as_view(template_name = 'match/bracket_detail.html'),  name='details'),
url(r'^player_detail/(?P<pk>[0-9]+)/$', views.PlayerSign, name='join')