# 命名

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的字段时才有效。

naming_series 命名

# 4. Prompt

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

提示命名

# 5. Format

这是在配置命名方案时最灵活的方式。

假设我们有

EXAMPLE-{MM}-test-{fieldname1}-{fieldname2}-{#####}

1
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

# 通过文档命名规则命名

您还可以通过创建文档命名规则为DocTypes命名。

文档命名规则

您可以为特定的doctype创建多个文档命名规则,这些规则可以根据过滤器有选择地应用。

要定义文档命名规则,您需要指定:

  1. 它正在应用的文档类型
  2. 规则的优先级(优先级更高的规则将首先应用)
  3. 应用规则的条件
  4. 命名规则

# 编号

您可以根据定义的条件为规则定义各种编号前缀。这是通过为该规则设置前缀和位数来完成的。

例如,如果您要为高优先级的待办事项创建单独的编号:

  1. 前缀:todo-high-
  2. 数字:3

将导致编号如todo-high-001todo-high-002等。

# 命名优先级

命名优先级如下

  1. 文档命名规则
  2. autoname控制器方法。
  3. autonameDocType属性

# 特殊规则

  1. 子DocTypes不遵循命名规则
  2. 修改后的文档在原始文档后有后缀(-1-2等)
最后更新时间: 9/27/2024, 3:24:28 PM