如何在 django admin 中进行自动生成(自动填充和递增)

How to make auto-genertion(auto-fill and increment) in django admin

我想让代码字段在 django 管理中自动填充和自动递增。 models.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 user.How 我可以实现吗?..

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