在父类/表中自定义标识符可以通过以下代码示例实现:
from django.db import models
from django.utils.crypto import get_random_string
class BaseModel(models.Model):
custom_identifier = models.CharField(max_length=10, unique=True)
def save(self, *args, **kwargs):
if not self.custom_identifier:
self.custom_identifier = self.generate_custom_identifier()
super().save(*args, **kwargs)
def generate_custom_identifier(self):
# 生成一个随机的10位字符串作为标识符
return get_random_string(length=10)
在这个示例中,我们定义了一个名为BaseModel
的父类,它包含一个名为custom_identifier
的字段,用于存储自定义的标识符。在save
方法中,我们检查是否已经存在了自定义标识符,如果没有,则调用generate_custom_identifier
方法生成一个随机的10位字符串作为标识符。然后调用父类的save
方法保存模型。
你可以在继承了BaseModel
的子类中使用这个自定义标识符,例如:
class ChildModel(BaseModel):
# 其他字段和方法
pass
通过这种方式,每次创建一个新的ChildModel
对象时,都会自动分配一个唯一的自定义标识符。