使用Django 2.0我有一个名为Book
的模型类,要求title
,author
,year
,但我在该行中有另一列需要唯一的列id基于作者姓名,书名和随机数。这是我的模特
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=50)
year = models.PositiveSmallIntegerField()
identification = models.CharField(max_length=50, blank=True)
holder = models.ForeignKey('Person', related_name='book_holder', on_delete=models.PROTECT(), null=True, blank=True)
available = models.BooleanField(default=True, blank=True)
overdue = models.BooleanField(default=False, blank=True)
它将以仅询问title
,author
和year
的形式使用,但我正在寻找的是如何填写identification
用户提交表单后的列。例如,如果用户输入Harry Potter
的{{1}}和title
的{{1}},我希望J. K. Rowling
具有两者的组合值加上最后是一个八位数的随机数,如author
,但我也需要这一列对每本书都是唯一的,所以如果我必须使用相同的哈利波特书籍,我需要两者都不同,所以一个人可能是identification
,而另一个可能是JH28194637
。我将使用ajax提交表单,我想在用户填写JH28194637
和JH39287104
字段然后传递时,我的javascript中可能有一个变量来构建我的identification
这是我的ajax电话。那会是最好的方式吗?但是,我如何能够检查数据库中是否已存在变量值,或者执行此任务的最佳方式是什么。
答案 0 :(得分:1)
由于其他两个字段可能会发生变化,我认为您的标识字段也需要更改,就唯一整数而言,您始终可以使用该图书模型ID来简化操作(除非您需要指定某些书籍的特定内容。)
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=50)
year = models.PositiveSmallIntegerField()
holder = models.ForeignKey('Person', related_name='book_holder', on_delete=models.PROTECT(), null=True, blank=True)
available = models.BooleanField(default=True, blank=True)
overdue = models.BooleanField(default=False, blank=True)
@property
def identification():
a = self.author[:1].upper()
t = self.title[:1].upper()
id = str(self.id.zfill(10))
return a+t+id