将apps从django 0.96迁移到1.0(二)
[b][size=3]Admin[/size][/b]在1.0中改变最大的是新的admin。Django管理界面(django.contirb.admin)已经完全重构了,admin定义从model定义中分离出去,框架使用django新表单处理库重写。
所以你得重写你的class Admin定义。将class Admin分离出去,放到admin.py中去,使用admin.site.register()来注册。
[size=3]使用新的inline语法[/size]
edit_inline移到admin.py中,例子如下:
0.96下
class Parent(models.Model):
...
class Child(models.Model):
parent = models.ForeignKey(Parent, edit_inline=models.STACKED, num_in_admin=3)
1.0下
class ChildInline(admin.StackedInline):
model = Child
extra = 3
class ParentAdmin(admin.ModelAdmin):
model = Parent
inlines = [ChildInline]
admin.site.register(Parent, ParentAdmin)
[size=3]单一化fields,或使用fieldsets[/size]
老fields语法容易混淆,虽然老语法仍然能工作。
0.96下
class ModelOne(models.Model):
...
class Admin:
fields = (
(None, {'fields': ('foo','bar')}),
)
class ModelTwo(models.Model):
...
class Admin:
fields = (
('group1', {'fields': ('foo','bar'), 'classes': 'collapse'}),
('group2', {'fields': ('spam','eggs'), 'classes': 'collapse wide'}),
)
1.0下
class ModelOneAdmin(admin.ModelAdmin):
fields = ('foo', 'bar')
class ModelTwoAdmin(admin.ModelAdmin):
fieldsets = (
('group1', {'fields': ('foo','bar'), 'classes': 'collapse'}),
('group2', {'fields': ('spam','eggs'), 'classes': 'collapse wide'}),
)
页:
[1]