2017-02-14 5 views
0

관리자가 내 모델 중 하나에 인스턴스를 추가하려고 할 때이 오류를 반환합니다. 모델 자체에 올바른 str() 메소드가 있고 인스턴스가 아직 없습니다. 또한 str() 메서드를 정적 메서드로 대체하거나 모두 제거해보십시오. 불운.admin의 오류 : __str__이 아닌 문자열 (유형 없음 유형)

오류가 관리자의 기록 부분에서 잘못되어 가고있는 것 같습니다. 스택 트레이스 지점이 내 models.pyadmin.py

class UserContent(models.Model): 
    created_at = models.DateTimeField(auto_now_add=True) 
    updated_at = models.DateTimeField(auto_now=True) 
    created_by = models.ForeignKey(User, related_name='%(class)s_creator') 
    updated_by = models.ForeignKey(User, related_name='%(class)s_updater') 

    class Meta: 
     abstract = True 


class Linetrans(UserContent): 
    line = models.ForeignKey(Line) 
    translation = models.ForeignKey(Translation) 
    text = models.CharField(max_length=400) 

    #def __str__(self): 
    # return self.text 

    class Meta: 
     ordering = ['line'] 

admin.site.register(Linetrans) 

다른 모델 클래스의 관련 부분은 매우 유사하고 오류를 반환하지 않습니다 (33)

Error during template rendering 

In template /Users/snirp/juis/snirpdrive/glotto/venv/lib/python3.6/site-packages/django/contrib/admin/templates/admin/change_form.html, error at line 33 
__str__ returned non-string (type NoneType) 
23 {% endblock %} 
24 {% endif %} 
25 
26 {% block content %}<div id="content-main"> 
27 {% block object-tools %} 
28 {% if change %}{% if not is_popup %} 
29 <ul class="object-tools"> 
30  {% block object-tools-items %} 
31  <li> 
32   {% url opts|admin_urlname:'history' original.pk|admin_urlquote as history_url %} 
33   <a href="{% add_preserved_filters history_url %}" class="historylink">{% trans "History" %}</a> 
34  </li> 
35  {% if has_absolute_url %}<li><a href="{{ absolute_url }}" class="viewsitelink">{% trans "View on site" %}</a></li>{% endif %} 
36  {% endblock %} 
37 </ul> 
38 {% endif %}{% endif %} 
39 {% endblock %} 
40 <form {% if has_file_field %}enctype="multipart/form-data" {% endif %}action="{{ form_url }}" method="post" id="{{ opts.model_name }}_form" novalidate>{% csrf_token %}{% block form_top %}{% endblock %} 
41 <div> 
42 {% if is_popup %}<input type="hidden" name="{{ is_popup_var }}" value="1" />{% endif %} 
43 {% if to_field %}<input type="hidden" name="{{ to_field_var }}" value="{{ to_field }}" />{% endif %} 

라인에 . 이 오류는 Linetrans가 다른 관리 클래스에 인라인으로 추가 될 때도 발생합니다.

편집/업데이트 : 모델에있는 다른 모든 str() 메서드를 주석 처리했으며 오류가 사라지는 것 같았습니다. 이제 문제를 정확히 찾아내는 중입니다.

답변

11

관련 모델에서 예기치 않은 빈 CharField가 있음을 알 수 있습니다. 이것을 남겨두면 다른 사람들에게 도움이 될 수 있기 때문입니다.

문제가되는 모델을 찾을 때까지 모델의 __str__() 메서드를 체계적으로 주석 처리하여 문제를 해결하십시오. 문제가되는 기록을 확인하기 위해 거기에서 일하십시오.

+0

반환 self.customerName "ERROR-고객 이름이 NULL입니다"'self.title '대신'self.title '또는'''를 사용하십시오. – Seth

1

비슷한 문제가있었습니다. 문제는 한 행에 대한 기본 키가 null (나는 그 일이 어떻게되었는지 알지 못한다) 이었다는 것입니다. 캐스케이드 문제로 인해 행을 삭제할 수 없었습니다. 그래서 str mmethod를 이와 같이 변경해야했습니다.

데프 STR (자기) : 경우 self.customerName == 없음 : 반환 내가 반환 된 __str__ 방법을했다