Напечатайте ошибку в / admin / myapp / mymodel при попытке получить доступ к администратору django, после того как я изменил некоторые поля модели (Django) - PullRequest
0 голосов
/ 28 сентября 2019

Я разрабатываю приложение в Django.

Оно работало нормально, пока я не переименовал некоторые поля в моей модели.
Я запустил миграцию и makemigrations.
Затем, когда я вошел какАдминистратор ad пытается получить доступ к "mymodel" в разделе "myapp", вот что я получаю:

Ошибка типа в / admin / myapp / glossary_entry /
недостаточно аргументовдля строки формата

В чем проблема?(Все остальное в моем приложении работает идеально, пока не будет получен доступ к содержимому модели на странице администратора)

Я публикую полное сообщение об ошибке здесь:

TypeError в / admin / myapp /glossary_entry / недостаточно аргументов для строки формата Метод запроса: GET URL запроса: http://127.0.0.1:8000/admin/myapp/glossary_entry/ Версия Django: 2.2.2 Тип исключения: TypeError Значение исключения: недостаточно аргументов для строки формата Расположение исключения: C: \ Users \ Tommaso \Django rest framework \ Udemy Django \ Myproject \ myapp \ models.py в str , строка 95 Исполняемый файл Python: C: \ Applicazioni_Tommaso \ Phyton \ python.exe Версия Python: 3.6.5 Путь к Python: ['C: \ Users \ Tommaso \ Django rest framework \ Udemy '' Django \ Myproject ',' C: \ Applicazioni_Tommaso \ Phyton \ python36.zip ',' C: \ Applicazioni_Tommaso \ Phyton \ DLLs ',' C: \ Applicazioni_Tommaso \ Phytonlib ',' C: \ Applicazioni_Tommaso \ Phyton ',' C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages ',' C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ pip-19.1.1-py3.6.egg '] Время сервера: Сб,28 сентября 2019 08:56:32 +0000 Ошибка при рендеринге шаблона В шаблоне C: \ Applicazioni_Tommaso \ Phyton \ lib \ site-packages \ django \ contrib \ admin \ templates \ admin \ base.html, ошибка в строке 62

недостаточно аргументов для строки формата 52 {% endblock%} 53 54 {% endif%} 55 {% endblock%} 56
{% block nav-global%} {% endblock%} 57 58 59 {%заблокировать хлебные крошки%} 60 61 {% trans 'Home'%} 62 {% if title%} ›{{title}} {% endif%} 63 64 {% endblock%} 65 {% endif%} 66 67 {% blockmessages%} 68 {% if messages%} 69 {% для сообщения в сообщениях%} 70 {{message | capfirst}} 71 {% endfor%} 72 {% endif%}

Вот мой admin.py:

from django.contrib import admin 
from .models import glossary_entry 

admin.site.register(glossary_entry)

вот мой model.py:

from django.db import models
from django.utils import timezone
from django.core.exceptions import ValidationError 


Admin_approval_switch_choices=[
    ("show","show"), # 1=valore da inserire negli script (=variabile), 2=valore assunto in relatà nel db
    ("hide","hide"),
    ]


class glossary_entry(models.Model):



    Lemma = models.CharField(max_length=256, blank=True, null=True)

    Acronimo = models.CharField(max_length=25, blank=True, null=True)

    Definizione = models.TextField(blank=True, null=True) # sostituire con textfield?

    Ambito_riferimento = models.CharField(max_length=256, blank=True, null=True)

    Autore_definizione = models.CharField(max_length=256, blank=True, null=True)

    Posizione_definizione = models.CharField(max_length=256, blank=True, null=True)

    Url_definizione = models.URLField(max_length=400, blank=True, null=True)

    Titolo_documento_fonte = models.CharField(max_length=256, blank=True, null=True)

    Autore_documento_fonte = models.CharField(max_length=256, blank=True, null=True)

    Host_documento_fonte = models.CharField(max_length=256, blank=True, null=True)

    Url_documento_fonte = models.URLField(max_length=400, blank=True, null=True)

    Data_inserimento_entry = models.DateField(blank=False, null=False, default=timezone.now().date() )

    Id_statico_entry = models.CharField(max_length=256, blank=False, null=False, default="ITCH00000")



    Admin_approval_switch = models.CharField(max_length=30,blank=False, null=False, default=Admin_approval_switch_choices[1], choices=Admin_approval_switch_choices)



    class Meta:
        ordering = ['-Admin_approval_switch', 'Lemma', 'Id_statico_entry']

    def clean(self):
        if not (self.Lemma or self.Acronimo or self.Definizione or  self.Ambito_riferimento or self.Autore_definizione or self.Posizione_definizione or self.Url_definizione or self.Titolo_documento_fonte or self.Autore_documento_fonte or self.Host_documento_fonte or self.Url_documento_fonte):
            raise ValidationError("Non è stata inserita alcuna terminologia. Compilare almeno un campo del form.")

    def __str__(self):    
        return  "%s / %s - %s - [%s]"  %  (self.Lemma, self.Id_statico_entry, self.Admin_approval_switch)  

1 Ответ

0 голосов
/ 28 сентября 2019

решено:

В последней строке мета-класса, в model.py:

def __str__(self):    
    return  "%s / %s - %s - [%s]"  %  (self.Lemma, self.Id_statico_entry, self.Admin_approval_switch) 

Существует несоответствие в "тегах вставки строк" и "вставке аргументов" (извинитемой плохой английский, пожалуйста).

Я заменил строку на:

def __str__(self):    
    return  "%s - %s - [%s]"  %  (self.Lemma, self.Id_statico_entry, self.Admin_approval_switch) 

и теперь все работает нормально.

...