# 命名
Frappe中的所有DocTypes都有一个名为name的主键。这是您将通过ORM查找记录并操作它们的唯一标识符。
您可以配置在创建新文档时docs应如何命名。以下是您可以在DocType中设置命名的方式。
# DocType autoname
您可以通过DocType的autoname属性设置名称。
# 1. field:[fieldname]
从提供的字段值中获取doc名称。

# 2. [series]
您可以提供一个将自动递增的命名模式。例如,如果您将其设置为PRE.#####,那么创建的第一个文档的name将是PRE00001,第二个将是PRE00002,依此类推。

# 3. naming_series:
命名模式来源于文档中的一个字段。例如,您的文档中有一个字段naming_series,它的值设置为PRE.#####,那么这将是用于生成名称的模式。这个值每个文档可以不同。因此,下一个文档可以有不同的模式。
这只在您的DocType中有一个名为
naming_series的字段时才有效。

# 4. Prompt
如果您将其设置为Prompt,则需要手动填写名称。

# 5. Format
这是在配置命名方案时最灵活的方式。
假设我们有
EXAMPLE-{MM}-test-{fieldname1}-{fieldname2}-{#####}
1
2
2

大括号外的一切都是普通文本。大括号内的关键词将根据它们所代表的内容进行评估。在这种情况下:
- MM:将被当前月份替换
- fieldname1:将被文档中
fieldname1的值替换 - #####:将生成一个系列,从
00001开始
所以最终的名称可能看起来像EXAMPLE-02-test-value1-value2-00001
# 通过控制器方法命名
您也可以通过在控制器类中声明autoname方法来以编程方式定义名称。示例:
from frappe.model.naming import getseries
class Project(Document):
def autoname(self):
# 根据客户选择项目名称
prefix = `P-{}-`.format(self.customer)
self.name = getseries(prefix, 3)
1
2
3
4
5
6
7
2
3
4
5
6
7
# 通过文档命名规则命名
您还可以通过创建文档命名规则为DocTypes命名。

您可以为特定的doctype创建多个文档命名规则,这些规则可以根据过滤器有选择地应用。
要定义文档命名规则,您需要指定:
- 它正在应用的文档类型
- 规则的优先级(优先级更高的规则将首先应用)
- 应用规则的条件
- 命名规则
# 编号
您可以根据定义的条件为规则定义各种编号前缀。这是通过为该规则设置前缀和位数来完成的。
例如,如果您要为高优先级的待办事项创建单独的编号:
- 前缀:todo-high-
- 数字:3
将导致编号如todo-high-001、todo-high-002等。
# 命名优先级
命名优先级如下
- 文档命名规则
autoname控制器方法。autonameDocType属性
# 特殊规则
- 子DocTypes不遵循命名规则
- 修改后的文档在原始文档后有后缀(
-1、-2等)