在我更改了一些模型字段 (Django) 之后,尝试访问 Django 管理时 /admin/myapp/mymodel 出现类型错误
TypeError at /admin/myapp/mymodel when trying to access django admin, after I changed some model fields (Django)
我正在用 Django 开发应用程序。
在我重命名模型中的某些字段之前,它工作正常。
我有 运行 迁移和 makemigrations。
然后,当我以管理员身份登录并尝试访问 "myapp" 部分中的 "mymodel" 时,这就是我得到的:
TypeError at /admin/myapp/glossary_entry/
not enough arguments for format string
有什么问题吗?
(在访问管理页面中的模型内容之前,我的应用程序中的其他所有内容都运行良好)
我post这里有完整的错误信息:
TypeError at /admin/myapp/glossary_entry/ not enough
arguments for format string Request Method: GET Request
URL: http://127.0.0.1:8000/admin/myapp/glossary_entry/
Django Version: 2.2.2 Exception Type: TypeError Exception Value: not
enough arguments for format string Exception
Location: C:\Users\Tommaso\Django rest framework\Udemy
Django\Myproject\myapp\models.py in str,
line 95 Python Executable: C:\Applicazioni_Tommaso\Phyton\python.exe
Python Version: 3.6.5 Python Path: ['C:\Users\Tommaso\Django rest
framework\Udemy ' 'Django\Myproject',
'C:\Applicazioni_Tommaso\Phyton\python36.zip',
'C:\Applicazioni_Tommaso\Phyton\DLLs',
'C:\Applicazioni_Tommaso\Phyton\lib',
'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']
Server time: Sat, 28 Sep 2019 08:56:32 +0000 Error during template
rendering In template
C:\Applicazioni_Tommaso\Phyton\lib\site-packages\django\contrib\admin\templates\admin\base.html,
error at line 62
not enough arguments for format string 52 {% endblock %}
53 54 {% endif %} 55 {% endblock %} 56
{% block nav-global %}{% endblock %} 57 58 59 {% block breadcrumbs %} 60 61 {% trans
'Home' %} 62 {% if title %} › {{ title }}{% endif %}
63 64 {% endblock %} 65 {% endif %} 66 67 {%
block messages %} 68 {% if messages %} 69 {% for message in messages %} 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)
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)
已解决:
在 class 元的最后一行,在 model.py 中:
def __str__(self):
return "%s / %s - %s - [%s]" % (self.Lemma, self.Id_statico_entry, self.Admin_approval_switch)
"string inserting tags" 和 "inserting arguments" 不匹配(请原谅我的英语不好)。
我将这一行替换为:
def __str__(self):
return "%s - %s - [%s]" % (self.Lemma, self.Id_statico_entry, self.Admin_approval_switch)
现在一切正常。
我正在用 Django 开发应用程序。
在我重命名模型中的某些字段之前,它工作正常。
我有 运行 迁移和 makemigrations。
然后,当我以管理员身份登录并尝试访问 "myapp" 部分中的 "mymodel" 时,这就是我得到的:
TypeError at /admin/myapp/glossary_entry/
not enough arguments for format string
有什么问题吗? (在访问管理页面中的模型内容之前,我的应用程序中的其他所有内容都运行良好)
我post这里有完整的错误信息:
TypeError at /admin/myapp/glossary_entry/ not enough arguments for format string Request Method: GET Request URL: http://127.0.0.1:8000/admin/myapp/glossary_entry/ Django Version: 2.2.2 Exception Type: TypeError Exception Value: not enough arguments for format string Exception Location: C:\Users\Tommaso\Django rest framework\Udemy Django\Myproject\myapp\models.py in str, line 95 Python Executable: C:\Applicazioni_Tommaso\Phyton\python.exe Python Version: 3.6.5 Python Path: ['C:\Users\Tommaso\Django rest framework\Udemy ' 'Django\Myproject', 'C:\Applicazioni_Tommaso\Phyton\python36.zip', 'C:\Applicazioni_Tommaso\Phyton\DLLs', 'C:\Applicazioni_Tommaso\Phyton\lib', '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'] Server time: Sat, 28 Sep 2019 08:56:32 +0000 Error during template rendering In template C:\Applicazioni_Tommaso\Phyton\lib\site-packages\django\contrib\admin\templates\admin\base.html, error at line 62
not enough arguments for format string 52 {% endblock %} 53 54 {% endif %} 55 {% endblock %} 56
{% block nav-global %}{% endblock %} 57 58 59 {% block breadcrumbs %} 60 61 {% trans 'Home' %} 62 {% if title %} › {{ title }}{% endif %} 63 64 {% endblock %} 65 {% endif %} 66 67 {% block messages %} 68 {% if messages %} 69 {% for message in messages %} 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)
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)
已解决:
在 class 元的最后一行,在 model.py 中:
def __str__(self):
return "%s / %s - %s - [%s]" % (self.Lemma, self.Id_statico_entry, self.Admin_approval_switch)
"string inserting tags" 和 "inserting arguments" 不匹配(请原谅我的英语不好)。
我将这一行替换为:
def __str__(self):
return "%s - %s - [%s]" % (self.Lemma, self.Id_statico_entry, self.Admin_approval_switch)
现在一切正常。