2017-09-21 4 views
1

lorsque je tente de sauver une étape au cours, je reçois une erreur str retourné non-string (type NoneType)__str__ retourné non-chaîne (type NoneType)

vous pouvez télécharger le captures d'écran ci-dessous en utilisant les urls

step page details

lorsque je tente de sauver:

error page

mon code est

modèles url:

urlpatterns = [ 
    url(r'^$', views.course_list), 
    url(r'(?P<pk>\d+)/(?P<pk>\d+)/$', views.step_details), 
    url(r'(?P<pk>\d+)/$', views.course_details), 
] 

models.py:

class Course(models.Model): 
    created_at = models.DateTimeField(auto_now_add=True) 
    title = models.CharField(max_length=255) 
    description = models.TextField() 

    def __str__(self): 
     return self.title 

    class Step(models.Model): 
     title = models.CharField(max_length = 255) 
     description = models.TextField() 
     order = models.IntegerField(default=0) 
     course = models.ForeignKey(Course) 

     class Meta: 
      ordering = ['order', ] 


     def __str__(self): 
      self.title 

views.py:

def step_details(request, course_pk, step_pk): 
    step = get_object_or_404(Step, course_id = course_pk, pk=step_pk) 
    return render(request, 'courses/step_details.html', {'step':step}) 

step_details.html:

{% extends "layout.html"%} 


{% block title%} {{step.title}} - {{ step.course.title }} {% endblock title %} 

{% block content %} 
<article> 
<h2> {{ step.course.title }} </h2> 
{{ step.description }} 
{{ step.content|linebreaks }} 
{{ step.course.created_at }} 

{##} 
{# <section>#} 
{#  {% for step in course.step_set.all %}#} 
{#  <h3> {{ step.title}}</h3>#} 
{#  {{step.description}}#} 
{#  {% endfor %}#} 
{# </section>#} 
</article> 
{% endblock %} 

Merci ...

Répondre

3

votre empreinte est mauvaise, vous avez écrit une classe dans une classe

class Course(models.Model): 
    created_at = models.DateTimeField(auto_now_add=True) 
    title = models.CharField(max_length=255) 
    description = models.TextField() 

    def __str__(self): 
     return self.title 

class Step(models.Model): 
    title = models.CharField(max_length = 255) 
    description = models.TextField() 
    order = models.IntegerField(default=0) 
    course = models.ForeignKey(Course) 

    class Meta: 
     ordering = ['order', ] 


    def __str__(self): 
     return self.title 
+1

n'est pas le '' '__str__'' 'supposé' '' '' 'retourner' '' ''? – Bestasttung

+0

@Exprator Merci pour la réponse. Je suis un tutoriel à des fins d'apprentissage .. ci-dessous est la capture d'écran sur la façon dont ils ont configuré le processus d'étape .. classe Meta est écrit à l'intérieur de l'étape de classe. Je pensais que comment implémenter une classe méta à un modèle .. Si je raté quelque chose que vous pourriez expliquer .. s'il vous plaît lien pour l'image de la configuration (de tutoriel il) [step_meta] (https : //1drv.ms/i/s! AqeHwFc2iLKooFALYmucgft0RaS5) __str__ renvoie self.tite .. – user3484925