2016-06-06 8 views
0

models.py SchaffungBenötigen Sie Hilfe ein Modell in einer Ansicht

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 }) 

Vorlage

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

Wenn eine Person auf den Link "Beitreten" klickt, möchte ich, dass ein PlayerSignup-Modell erstellt und mit dem aktuellen Spiel verknüpft wird, auf dem sie sich befinden.

, wenn ich das Spiel Link nichts passiert Join klicken, kein neues Modell, kein Fehler

+0

Was sind Ihre anderen URLs definieren? –

+0

@DanielRoseman ich bearbeitet, alle URLs sollten dort sein – Hobbs

+0

Nun, was ist Ihr Join Match Link? – e4c5

Antwort

2

Zuerst versuchen diese Aussage

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

zu

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

zu bearbeiten, da ein dort ist Anforderungsparameter in URL mit dem Namen pk, sollten Sie diesen Parameter an die Abfrage-Methode übergeben.

Zweitens überprüfen Sie Ihre 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') 

Wechsel zu

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') 
+0

Das ist in der Tat * ein * Problem, aber nicht das, was das OP erlebt: Django kommt wegen eines URL-Konflikts nicht einmal zur entsprechenden Ansicht. –

+0

Danke Daniel, ich werde die Lösung bearbeiten –

+0

Danke für die Hilfe! Ich frage mich nur eine Sache, was, wenn ich nicht zu einer neuen URL gehen möchte, aber auf der gleichen URL bleibe? @ThinhPhan – Hobbs

Verwandte Themen