【问题标题】:How to make auto-genertion(auto-fill and increment) in django admin如何在 django admin 中进行自动生成(自动填充和增量)
【发布时间】:2022-01-24 03:58:39
【问题描述】:

我想让代码字段在 django admin 中自动填充和自动递增。 模型.py

class GeneralDocumentType(models.Model):
    code = models.CharField(max_length=10, null=False, unique=True)
    name = models.CharField(max_length=100, null=False, unique=True)
    description = models.TextField(blank=True, null=True)

    def __str__(self):
        return self.name

我想显示我的代码字段 default=DOC001,它会在用户添加数据之前显示增量 1。我该如何实现?..

【问题讨论】:

    标签: django django-forms django-admin


    【解决方案1】:

    Django ModelAdmin 支持 get_changeform_initial_data。在您的管理员中,您可以覆盖此方法以根据最新的 id 信息获取值。例如:

    class YourModelAdmin(admin.ModelAdmin):
      ...
      def get_changeform_initial_data(self, request):
        # getting the latest id
        try:
            latest_document_type = GeneralDocumentType.object.latest('id')
            latest_id = latest_document_type.id + 1
        except GeneralDocumentType.DoesNotExist:
            # incase there no object yet
            latest_id = 0
            
        return {'code': f'DOC{latest_id}'}
    

    注意:这仅适用于 adding 新对象 ModelAdmin。不适用于InlineModelAdmin

    【讨论】:

    • 它的工作,但我想给 3digit 格式我该如何设置??
    • @VijiLakshmi 也许你可以在python部分提出另一个问题,我只帮助了与django相关的部分:)
    猜你喜欢
    • 2011-03-08
    • 1970-01-01
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 2017-07-13
    • 2019-07-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多