(首先抱歉我的英语不好,我希望你能理解我)
我必须在我的某个模型的对象中添加自定义ID,如果相关对象具有一个或其他属性,则此自定义ID将具有字母P或L. 特别是如果员工拥有" Planta Permantente"或" Planta Contratada"属性自定义ID将以P开头,如果你有" Locacion de servicio"属性将以L开头。但两者都需要具有相关数字。如果我有一个P1,当我为员工添加一个新证书" locacion de servicio"自定义ID必须是" L1" P" P2"
的下一个我该怎么做?
这是我员工模式的一部分
CONTRACT_TYPES = (
(1, ("Planta Permanente")),
(2, ("Planta Contratada")),
(3, ("Locación de servicio")),
)
class Employee(models.Model):
cuil = models.CharField(
unique=True,
max_length=11,
verbose_name=_('CUIL'),
)
name = models.CharField(
max_length=50,
verbose_name=_('first name'),
)
middle_name = models.CharField(
blank=True,
max_length=50,
verbose_name=_('middle name'),
)
last_name = models.CharField(
max_length=100,
verbose_name=_('last name'),
)
have_children = models.BooleanField(
default=False)
contract = models.IntegerField(
choices=CONTRACT_TYPES,
verbose_name=_('contract'),
)
这是我的证书模型的一部分
class Certificate(models.Model):
employee = models.ForeignKey(
Employee,
verbose_name=_('employee'),
)
place = models.IntegerField(
choices=ACCIDENT_PLACE,
default=1,
verbose_name=_('place')
)
detail = models.CharField(
max_length=255,
verbose_name=_('detail'),
)
clinic = models.ForeignKey(
Clinic,
verbose_name=_('clinic'),
)
那就是我需要做的,如果员工的合同类型1或2标识P1 P2 P3 ... P100 ... Pn,如果3是相同但L字母。
有什么想法吗?
(非常感谢)
答案 0 :(得分:0)
您是否在文档中阅读了此方法:https://docs.djangoproject.com/en/1.9/ref/models/instances/#explicitly-specifying-auto-primary-key-values?
如果你手动指定自定义ID(一个简单的'if'会怎么做?)将P1,L1或P2放在前面并保存,如上面的django docs链接所示,这会有帮助吗?为了确保数字是连续的(我假设你想要像L101,P102,P103,P204等?)你可以将你的自定义ID与自动主键组合,对吗?
因此,最终您的模型将具有自动生成的ID以及您自定义ID,其中前两个字母被指定为您,以下数字是自动生成的主键的副本。
希望有所帮助!