2015-12-30 34 views
0

在ModelAdmin類內部有一個內聯表格視圖(GenericTabularInline)。我需要添加鏈接來改變內聯表格視圖中的表單。下面是一些refrence代碼Django 1.7顯示在內聯tablur視圖中更改表單的鏈接

class StudentActionInline(generic.GenericTabularInline): 
    model = StudentActionInline 
    ordering = ('roll_no',) 


class CaptainAdmin(admin.ModelAdmin): 
    inlines = [ 
     StudentActionInline 
    ] 

我想添加一個鏈接以改變學生模型(一種形式來改變學生模型),內聯表格視圖中。這是在Django 1.7

+0

如果我理解正確,學生模型是向管理員註冊的,並且您只想添加一個鏈接到與內聯表單中StudentActionInline關聯的學生實例的更改頁面上?我假設StudentActionInline對學生有一個fk? – Paulo

+0

是的,這是正確的 –

回答

0

我不確定是否鼓勵,但這是我過去如何解決這個問題。

class StudentActionInline(generic.GenericTabularInline): 
    model = StudentActionInline 
    ordering = ('roll_no',) 

    def edit_student(self, obj): 
     # Use the obj here to get a student pk and the admin url 
     return '<a href="link_goes_here">Edit student</a>' 
    edit_student.allow_tags = True 
    edit_student.short_description = 'Edit student' 

    def get_readonly_fields(self, request, obj=None): 
     fields = super(StudentActionInline, self).get_readonly_fields(request, obj) 

     if obj and obj.pk: 
      # It's important to not make modifications 
      # to the fields directly. 
      fields = list(fields) + ['edit_student'] 
     return fields 

Django管理允許「動態」只讀字段,所以我修改了get_readonly_fields方法,如果存在的助學行動VS是新的(無PK)只加edit_student場,這是爲了避免與學生的動作因爲它是空白的,所以沒有學生依附它。

請注意,如果您的管理定義爲StudentActionInline已定義了字段或字段集,那麼您還必須在其中添加edit_student。

相關問題