chr*_*ley 3 django django-admin
我有一系列的表格,我想都有一个订单字段.所以我做了一个抽象的模型:
class OrderedModel(models.Model):
order = models.IntegerField(default=-1)
def _order(self):
pass #ordering widget for changelist_view
_order.allow_tags = True
def save(self,*args,**kwargs):
#set order = 0 if < 0
super(OrderedModel,self).save(*args,**kwargs)
class Meta:
abstract = True
Run Code Online (Sandbox Code Playgroud)
我不希望他们更改change_view中的"order"字段,因此我创建了以下ModelAdmin:
class OrderedAdmin(models.ModelAdmin):
list_display = ("__str__","_order","order")
list_editable = ("order",)
readonly_fields = ("order",)
Run Code Online (Sandbox Code Playgroud)
只要从OrderedModel继承的每个模型在list_display,list_editable或readonly_fields中不再需要任何项目,那就没问题.例如,以下内容会生成错误,因为order在list_editable中但不在list_display中:
class Chapter(OrderedModel):
title = models.CharField(max_length=32)
class ChapterAdmin(OrderedAdmin):
list_display = ("title",)
Run Code Online (Sandbox Code Playgroud)
我注意到有一个get_readonly_fields我可以更改以确保"order"被添加到readonly_fields,但是没有get_list_display或get_list_editable来重写.是否有可能做到这一点?
class ChapterAdmin(OrderedAdmin):
list_display = OrderedAdmin.list_display + ("title",)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |