0

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

设置.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',
)

模型.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

管理员.py

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

admin.site.register(Recipes)

作为记录,我的这个应用程序的文件夹也被命名为“recipes”。

如何修复此链接?

4

2 回答 2

2

通常的约定是使用单数名词作为您的模型名称 -Recipe而不是Recipes.

如果您真的想Recipes用作模型名称,您可以使用模型类 上的verbose_nameverbose_name_plural属性自定义显示的名称,如下所述: https ://docs.djangoproject.com/en/dev/ref/models/options/#详细名称Meta

于 2013-05-14T19:49:06.310 回答
1

您缺少一些元信息。verbose_name, 默认情况下将具有模型名称,并且verbose_name_plural默认情况下将s附加到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"
于 2013-05-14T19:50:12.720 回答