gpt4 book ai didi

python - 模型中 ugettext 的用途

转载 作者:行者123 更新时间:2023-12-01 04:51:05 25 4
gpt4 key购买 nike

在大量 Django tuts 以及网上的任何地方,人们都会在模型类中创建如下所示的字段:

from django.db import models
from django.utils.translation import ugettext as _

class MyModel(models.Model)
created = models.DateTimeField(
_('Created'),
auto_now_add=True
)

我理解 ugettext 正在做什么,但我不明白为什么它被应用于本例中的“Created”。为什么不直接写:

created = models.DateTimeField(auto_now_add=True)

此外,“创建”是否指的是已在某处定义的内容?在此示例中,我没有看到它存在于 forms.py 中,也没有在 views.py 中传递。所以,无论它是什么,它都只存在于这个模型中 - 至少我是这么认为的。

最佳答案

我相当确定它就像您不定义该字符串一样简单,它将用于标识 ModelForm 中的字段。如果您随后在网站上使用多种语言,则该字段将不会有与其关联的翻译字符串。

因此,您可以在 forms.py 中轻松定义一个表单;

from django import forms

from .models import MyModel


class MyForm(forms.ModelForm):
"""
MyForm is a nice a simple ModelForm using
labels from MyModel.
"""

class Meta:
model = MyModel
fields = ['created', ]

# views.py
from django.views.generic.edit import CreateView
from django.core.urlresolvers import reverse_lazy

from .forms import MyForm


class MyObjCreate(CreateView):
form_class = MyForm

通过添加 ugettext 字符串,它将被拉入消息目录,然后可以对其进行翻译。至少从我的翻译经验来看这是有道理的。

查看文档,尤其是关于模型的 class Meta 的文档; https://docs.djangoproject.com/en/1.7/topics/i18n/translation/#model-verbose-names-values

关于python - 模型中 ugettext 的用途,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28462767/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com