2013-07-12 25 views
15

Tôi có một mô hình Team whit players ManyToManyField và tôi muốn có thể thêm Player s vào nhóm mới khi được tạo nhưng không thể sửa đổi sau khi tạo.Trường chỉ đọc Django chỉ khi thay đổi, nhưng không phải khi tạo

Nếu tôi làm cho lĩnh vực players readonly như thế này:

# admin.py 
class TeamAdmin(admin.ModelAdmin) 
    readonly_fields = ['players'] 

admin.site.register(Team, TeamAdmin) 

tôi sẽ không thể để thêm người chơi mới Team. Làm cách nào để tạo trường players "chỉ đọc sau khi được tạo" hoặc một cái gì đó tương tự?

Trả lời

32

Bạn cần ghi đè phương thức get_readonly_fields() của lớp quản trị viên của mình.

# admin.py 
class TeamAdmin(admin.ModelAdmin) 
    ... 

    def get_readonly_fields(self, request, obj=None): 
     if obj: #This is the case when obj is already created i.e. it's an edit 
      return ['players'] 
     else: 
      return [] 
+0

Hoàn hảo, cảm ơn! – kissgyorgy

Các vấn đề liên quan