python - 提交值后更新预览字段

标签 python django python-3.x django-models

我有一个用于存储文档编号的模型,其中要填充的字段是文档、前缀、后缀、长度和开始。我可以这样做,但填充这些数据后,我需要在表中显示预览字段,并且预览字段基于前缀、后缀和长度。

我的意思是说,如果我将前缀填写为 1,后缀填写为 -2345,长度填写为 4,那么该文档的预览应该为

1xxxx-2345

如果前缀为he-,后缀为-7459,长度为5,则预览应为

he-xxxxx-7459

这可以通过以下逻辑来完成

preview = str(prefix)+(('x')*length)+str(sufix)

但是我如何在 django 中实现这个?我是否必须使用信号或覆盖保存方法?有人可以给我一个主意吗?

这是我的模型

class DocumentNumbering(models.Model):
    office = models.OneToOneField(OfficeSetup, blank=True, null=True)
    document = models.OneToOneField(Document blank=False, null=False)
    prefix = models.CharField(max_length=100, blank=True, null=True)
    sufix = models.IntegerField(blank=True, null=True)
    start_number = models.PositiveIntegerField(
        default=0, blank=False, null=False)
    length = models.PositiveIntegerField(default=0, blank=False, null=False, validators=[
                                         MaxValueValidator(10), MinValueValidator(1)])

    // not sure where to implement the logic for preview
    def save(self, *args, **kwargs):

最佳答案

您真的需要将其存储在数据库中吗?如果只是为了显示目的,您可以使用派生属性:

@property
def preview(self):
    return str(self.prefix)+(('x')*self.length)+str(self.sufix)

关于python - 提交值后更新预览字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47321634/

相关文章:

python - 在 Web2py 中访问安装在 Pythonanywhere 上的模块

django - 为什么我可以连接到http ://127. 0.0.1 :8000/but not to http://192. 168.1.6/

python - Tkinter:如何确定 Toplevel 的位置?

python - 无法在另一个函数中以正确的方式打印名称

Python isinstance() 的 float 失败断言测试

python - 使用 python 流解析从 org.apache.avro.mapred.AvroAsTextInputFormat 生成的 json 字符串

python - 如何在 matplotlib 中为已绘制的线设置标签?

python - 使用 scikit-image 读取图像缓冲区

python - 如何在 Django 中基于类的 View 中使用帖子保存表单时保存用户

django - 管理界面可编辑 Django 应用程序设置