Django App中的错误链接文本

时间:2013-05-14 19:47:24

标签: python django django-admin

我第一次在这里乱搞Django,我已经设置了一些初步的东西。在管理页面上,我有一个自定义应用程序,其数据库功能正常运行。但是,链接文本不正确(以红色here突出显示)。它应该只是说“食谱”没有第二个“s”。我无法弄清楚为什么会发生这种情况或如何解决它。这是我已经检查过的一些关键文件的代码。

settings.py

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'recipes',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
)

models.py

from django.db import models

class Recipes(models.Model):
    name = models.CharField(max_length=100)
    ingredients = models.CharField(max_length=1000)

    def __unicode__(self):
        return self.name + " / " + self.ingredients

admin.py

from recipes.models import Recipes  
from django.contrib import admin

admin.site.register(Recipes)

对于记录,此应用程序的文件夹也命名为“recipes”。

如何修复此链接?

2 个答案:

答案 0 :(得分:2)

通常的惯例是使用单数名词作为模型名称 - Recipe而不是Recipes

如果您确实希望使用Recipes作为模型名称,则可以使用模型verbose_name类上的verbose_name_pluralMeta属性自定义显示的名称这里: https://docs.djangoproject.com/en/dev/ref/models/options/#verbose-name

答案 1 :(得分:1)

您缺少一些Meta信息。默认情况下,verbose_name具有模型名称,默认情况下verbose_name_plurals附加到verbose_name。你需要覆盖它。

class Recipes(models.Model):
    name = models.CharField(max_length=100)
    ingredients = models.CharField(max_length=1000)

    def __unicode__(self):
        return self.name + " / " + self.ingredients

    class Meta:
        verbose_name = "Recipe"
        verbose_name_plural = "Recipies"