Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在模型中为两列添加前缀值。。。?_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何在模型中为两列添加前缀值。。。?

Python 如何在模型中为两列添加前缀值。。。?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我试图在一个表的两列中添加前缀(CLI,CID),但它只对主键起作用,而其他字段不会像这样生成CID0001。。。。 这是我的模特 class Prefix(models.Model): cdClientID = models.CharField(primary_key=True, editable=False, max_length=200) cdClientNumber = models.CharField(editable=False, max_length=200) class Met

我试图在一个表的两列中添加前缀(CLI,CID),但它只对主键起作用,而其他字段不会像这样生成CID0001。。。。 这是我的模特

class Prefix(models.Model):
cdClientID = models.CharField(primary_key=True, editable=False, max_length=200)
cdClientNumber = models.CharField(editable=False, max_length=200)

class Meta:
    unique_together = (('cdClientID', 'cdClientNumber'),)

def save(self, *args, **kwargs):
    if not self.cdClientID:
        prefix = 'ATT{}'.format('')
        prev_instances = self.__class__.objects.filter(cdClientID__contains=prefix)
        if prev_instances.exists():
            last_instance_id = prev_instances.last().cdClientID[-4:]
            self.cdClientID = prefix + '{0:08d}'.format(int(last_instance_id) + 1)
        else:
            self.cdClientID = prefix + '{0:08d}'.format(1)
    super(Prefix, self).save(*args, **kwargs)
在这里,它生成了唯一的clientID及其PK,如何使用autoIncrement生成clientnumber和CLN00001


tnx提前…

不确定这在实际的web服务器中如何工作,但它似乎在Django shell中工作。以您的代码为例:

class Prefix(models.Model):
    cdClientID = models.CharField(primary_key=True, max_length=200)
我删除
editable=False
的原因是您需要执行以下操作:

str='CLN'+1 >>>p=Prefix.objects.create(cdClientID=str) 稍后您需要解析数字格式以获得前导零,但这只是简单的方法


否否CclientID正在生成CLN000001,但我只想创建这样的CdclientNumber,我还需要生成类似CLD000001的CLD000001如何执行此操作。。。这将在一个表中完成。这就是我在第二块中介绍的内容。不能直接生成包含字符和数字的字符串。您必须单独执行,然后将它们添加到一起。格式只是填写
000001
前面的零。顺便说一句,既然没有直接生成主键的方法,每次创建这个对象时,您需要将其id作为参数传入。如果我在此处输入其他字段,如name,它应该类似于| cdClientID | cdClientNumber | name | CID00001 | CLN0000001 | mahesh |当我输入name字段时,其他剩余字段将生成CID00001和CLN00001,并且它应该是自动递增的。是的,您可以自动递增它,但我不认为你能直接在野外完成。也许在创建对象的某个地方调用一个连接函数。