【问题标题】:Autofill database column after form submission in django在 django 中提交表单后自动填充数据库列
【发布时间】:2018-06-13 14:49:51
【问题描述】:

使用 Django 2.0 我有一个名为 Book 的模型类,它要求输入 titleauthoryear,但我在该行中有另一列需要基于作者姓名的唯一 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)

它将用于只要求titleauthoryear 的表单,但我要寻找的是如何在用户提交表单后填写identification 列。因此,例如,如果用户为title 输入Harry Potter,为author 输入J. K. Rowling,我希望identification 的值是两者的组合加上最后一个八位随机数,例如JH28194637 但我还需要这个专栏对于每本书都是独一无二的,所以如果我必须阅读相同的《哈利波特》书籍,我需要两者都不同,所以一个可以是 JH28194637 而另一个可以是 JH39287104 .我将使用 ajax 提交我的表单,并且我正在考虑在我的 javascript 中可能有一个变量,当用户填写 authortitle 字段然后将其传递给我的 ajax 调用时,它会构建我的 identification。那会是最好的方法吗?但是,我将如何检查变量值是否已存在于数据库中,或者执行此任务的最佳方法是什么。

【问题讨论】:

标签: ajax django database django-models django-forms


【解决方案1】:

由于其他两个字段可能会更改,并且我假设您的标识字段也需要更改,就唯一整数而言,您始终可以使用该图书模型 ID 使事情变得更简单(除非您需要指定特定书籍的特定 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多