Django:拼写不匹配尽管没有写

时间:2015-07-25 16:56:58

标签: python django python-3.x

这是一个我无法解决的令人困惑的问题。
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"。
我检查并仔细检查,但我无法弄清楚为什么会发生这种情况。

Grep for "Meetings" Grep for "Meetingss" Why is it showing "Meetingss" "Goalss" is also behaving similarly

4 个答案:

答案 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课程中指定Metaclass 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)

MeetingssMeetings的复数形式,Django Admin冒昧地放置额外的Goalss。用于管理模型对象列表。

您的's'

也是如此

答案 3 :(得分:0)

您可以做的是使用上面定义的详细名称,或者您只需将模型定义为“会议”而不是“会议”来解决问题