美文网首页django admin 这么强还需要写后台页面?
django admin 这么强还需要写后台页面? 1) 完成订

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

作者: 月球在此 | 来源:发表于2023-11-29 09:42 被阅读0次

在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界面中变为只读。如果订单状态不是“完成”,则使用默认的只读字段设置。

相关文章

网友评论

    本文标题:django admin 这么强还需要写后台页面? 1) 完成订

    本文链接:https://www.haomeiwen.com/subject/fytfgdtx.html