django admin 这么强还需要写后台页面? 1) 完成订单不需要编辑

在Django中,要实现在Django Admin中根据订单状态改变字段的可编辑性,你可以通过自定义ModelAdmin类来实现。以下是一个简单的例子,假设你有一个名为Order的模型,其中包含一个名为status的字段来表示订单状态。

首先,定义你的Order模型(如果还没有定义的话)。例如:

from django.db import models

class Order(models.Model):
    # 假设有几个字段
    name = models.CharField(max_length=100)
    description = models.TextField()
    status = models.CharField(max_length=10)  # 假设订单状态是一个字符串字段

    # 其他需要的字段...

接下来,自定义ModelAdmin类。在这个类中,你可以重写get_readonly_fields方法,根据订单状态动态返回只读字段列表:

from .models import Order

class OrderAdmin(admin.ModelAdmin):
    def get_readonly_fields(self, request, obj=None):
        if obj and obj.status == '完成':  # 假设'完成'是表示订单完成的状态
            # 如果订单状态为完成,则所有字段都设为只读
            return [f.name for f in self.model._meta.fields]
        return super().get_readonly_fields(request, obj)

admin.site.register(Order, OrderAdmin)

当订单状态为“完成”时,get_readonly_fields方法返回所有字段名,使它们在Admin界面中变为只读。如果订单状态不是“完成”,则使用默认的只读字段设置。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容