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

Python 需要帮助在视图中创建模型吗,python,django,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

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)
url.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')
模板

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

当一个人点击“加入比赛”链接时,我希望它创建一个PlayerSignup模型,并将其链接到他们正在进行的当前比赛


当我单击“连接匹配”链接时,什么都没有发生,没有新型号,没有错误。首先,请尝试编辑此语句

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

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

其次,检查您的url定义

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'^(?P[0-9]+)/$,views.DetailView.as_视图(template_name='match/bracket_detail.html'),name='details'),
url(r'(?P[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')
url(r'^match\u detail/(?P[0-9]+)/$),views.DetailView.as\u view(模板名称='match/bracket\u detail.html'),name='details'),
url(r“^player\u detail/(?P[0-9]+)/$”,views.PlayerSign,name='join')

首先,尝试编辑此语句

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

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

其次,检查您的url定义

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'^(?P[0-9]+)/$,views.DetailView.as_视图(template_name='match/bracket_detail.html'),name='details'),
url(r'(?P[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')
url(r'^match\u detail/(?P[0-9]+)/$),views.DetailView.as\u view(模板名称='match/bracket\u detail.html'),name='details'),
url(r“^player\u detail/(?P[0-9]+)/$”,views.PlayerSign,name='join')

你的其他URL是什么?@DanielRoseman我编辑过,所有的URL都应该在那里。你的加入匹配链接是什么?你希望Django如何区分你的详细信息和加入URL?@DanielRoseman啊,我明白你的意思了。添加/添加/到结尾给了我一个“NoReverseMatch”错误。你的其他URL是什么?@DanielRoseman我编辑过,所有的URL都应该在那里。那么,你的加入匹配链接是什么?你希望Django如何区分你的详细信息和加入URL?@DanielRoseman啊,我明白你的意思了。在末尾添加/add/给了我一个“NoReverseMatch”错误,这确实是一个问题,但不是OP遇到的问题:Django甚至因为URL冲突而无法访问相关视图。感谢您的帮助!只是想知道一件事,如果我不想去一个新的网址,但留在同一个网址呢@事实上,我不明白你的意思。但是我想你需要使用“HttpResponseRedirect”()这确实是个问题,但不是OP遇到的问题:Django甚至因为URL冲突而无法访问相关视图。谢谢你的帮助!只是想知道一件事,如果我不想去一个新的网址,但留在同一个网址呢@事实上,我不明白你的意思。但我想你需要使用“HttpResponseRedirect”()