2017-03-19 2 views
0

Ich baue eine Django-Web-App, die erfordert, dass Benutzer sich für Jobs bewerben können.Speichern des Bewerbermodells in der Datenbank schlägt fehl, warum?

Hier ist das relevante Modell für die Antragsteller:

class Applicant(models.Model): 
    job = models.ForeignKey(Job) 
    user = models.ForeignKey(User) 
    date = models.DateTimeField(auto_now_add=True) 

    class Meta: 
     # So that the same user can't apply to the same job twice. 
     unique_together = [("job", "user"),] 

Hier ist die Ansicht, dieses Modell mit einem Bewerber erstellen und speichern:

@login_required 
def job_apply(request, job_pk): 
    # Get the job that the user has applied for. 
    job = get_object_or_404(Job, pk=job_pk) 
    applicant = models.Applicant(job=job, user=request.user) 
    applicant.save() 
    return reverse('jobs:find') 

Dies ist die Fehlermeldung, die django gibt mir :

Exception Type: AttributeError 
Exception Value: 'unicode' object has no attribute 'get' 
+1

Gibt der Stack-Trace an, wo der Fehler auftritt? – karthikr

Antwort

3

job_apply ist eine Ansicht. Der Vertrag für eine Sicht besteht darin, dass sie eine Anfrage akzeptiert und eine Antwort zurückgibt. Aber Sie geben keine Antwort zurück: Sie geben nur einen Pfad zurück, der das Ergebnis von reverse ist.

Sie sollten stattdessen redirect verwenden, da dies eine Verknüpfung ist, die eine Antwort erstellt, die eine Weiterleitung an die benannte URL ist.

return redirect('jobs:find') 
Verwandte Themen