这是一个我无法解决的令人困惑的问题。
models.py
有:
class Meetings(models.Model):
team_id = models.ForeignKey( Team )
meeting_id = models.AutoField( primary_key = True )
mentor_meeting_rating = models.IntegerField( default = 0, validators=[MinValueValidator(0), MaxValueValidator(5)] )
mentee_meeting_rating = models.IntegerField( default = 0, validators=[MinValueValidator(0), MaxValueValidator(5)] )
meeting_date = models.DateTimeField( default = django.utils.timezone.now ,blank = True)
TEL = 'Telephone'
ONL = 'Online'
F2F = 'Face to Face'
MEETING_METHODS = (
(TEL,'Telephone'),
(ONL,'Online' ),
(F2F,'Face to Face'),
)
meeting = models.CharField( max_length = 15,
choices = MEETING_METHODS,
default = F2F )
admin.py
有:
from django.contrib import admin
from .models import Mentor, Mentee, Team, Admin, Meetings, Goals
# Register your models here.
admin.site.register(Mentor)
admin.site.register(Mentee)
admin.site.register(Team)
admin.site.register(Meetings)
admin.site.register(Goals)
admin.site.register(Admin)
urls.py
是:
from django.conf.urls import include, url
from django.contrib import admin
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^dream_site/', include('dream_site.urls')),
]
settings.py
有:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'dream_site',
'dream_chat',
)
然而,会议有2'在Admin界面中,我运行了一个grep命令,它没有显示任何地方有" Meetingss"。
我检查并仔细检查,但我无法弄清楚为什么会发生这种情况。
答案 0 :(得分:3)
Django会自动创建多个类名。例如,此功能在管理界面中使用。因此,您正在查看" Meetingss"。
最好使用单数名称(会议)命名您的班级。如果你想保留你的命名,你可以在类的元信息中覆盖Django的复数创作:
class Meetings(models.Model):
# your code here
class Meta:
verbose_name_plural = 'Meetings'
有关详细信息,请参阅https://docs.djangoproject.com/en/1.8/ref/models/options/#verbose-name-plural。
答案 1 :(得分:2)
Django admin默认情况下,将所有模型列为复数,即最后加's'
。
因此,Django在管理模板中的Meetings
中添加了Meetings
。现在,由于您的模型s
在结尾处有Meetingss
,因此其显示为's'
。
要控制此行为,您可以使用verbose_name_plural
。它控制对象的复数名称。
您可以根据自己的选择设置对象的复数名称。如果未设置,Django将在末尾添加verbose_name
。
根据Django docs,
如果没有给出,Django将使用
verbose_name_plural
+" s"。
您可以在Meetings
课程中指定Meta
到class Meetings(models.Model):
team_id = models.ForeignKey( Team )
meeting_id = models.AutoField( primary_key = True )
mentor_meeting_rating = models.IntegerField( default = 0, validators=[MinValueValidator(0), MaxValueValidator(5)] )
mentee_meeting_rating = models.IntegerField( default = 0, validators=[MinValueValidator(0), MaxValueValidator(5)] )
meeting_date = models.DateTimeField( default = django.utils.timezone.now ,blank = True)
TEL = 'Telephone'
ONL = 'Online'
F2F = 'Face to Face'
MEETING_METHODS = (
(TEL,'Telephone'),
(ONL,'Online' ),
(F2F,'Face to Face'),
)
meeting = models.CharField( max_length = 15,
choices = MEETING_METHODS,
default = F2F )
class Meta:
verbose_name_plural = 'Meetings' # explicitly provide the verbose_plural_name
的值,如下所示:
verbose_name
注意:为您的班级使用单数名称
您可以通过verbose_name
参数控制模型的详细名称。
根据class Meetings:
....
class Meta:
verbose_name = 'Meeting'
文档,
对象的可读名称,单数:
findMaxIndex
这也适用于您的情况。
答案 2 :(得分:0)
Meetingss
是Meetings
的复数形式,Django Admin冒昧地放置额外的Goalss
。用于管理模型对象列表。
您的's'
答案 3 :(得分:0)
您可以做的是使用上面定义的详细名称,或者您只需将模型定义为“会议”而不是“会议”来解决问题