正在開發的Python網站之自訂後台一

來源:互聯網
上載者:User

建立一個ceshi的應用(app),功能是開發一個心理測試系統,後台增加測試(ceshi),點儲存的時候需要跳轉到增加問題(question)的介面,然而預設的操作沒有這個功能,需要重寫admin.ModelAdmin的response_add方法,重寫的代碼如下:

 

class CeshiAdmin(admin.ModelAdmin):    fields = ('type', 'title', 'content', 'cover', 'tags')        def response_add(self, request, obj, post_url_continue='../%s/'):        path = 'http://www.cnblogs.com/ceshijumpquestion/add/?ceshi_id=%s' % obj._get_pk_val()        super(CeshiAdmin, self).response_add(request, obj, post_url_continue=post_url_continue)        return HttpResponseRedirect(path)

  

調用父類的方法,然後重新導向到我們需要的地址,這樣,增加ceshi後頁面就會跳轉到增加question的介面了

在增加question的介面中,我們需要知道是為哪個ceshi增加question,於是重寫add_view方法:

class CeshiJumpQuestionAdmin(admin.ModelAdmin):    fields = ['question']    inlines = [CeshiJumpChoiceInline]    list_display = ['ceshi', 'question']        def add_view(self, request, form_url='', extra_context=None):        ceshi = Ceshi.objects.get(pk=request.GET['ceshi_id'])        return super(CeshiJumpQuestionAdmin, self).add_view(request, form_url=form_url,                                                             extra_context={'ceshi': ceshi})

  

這樣在增加question的模板中,就多了一個ceshi的對象了

在儲存question的時候,我們希望它把引用的ceshi也一起儲存,重寫save_model方法

class CeshiJumpQuestionAdmin(admin.ModelAdmin):    def save_model(self, request, obj, form, change):        obj.ceshi = Ceshi.objects.get(pk=request.POST['ceshi'])        super(CeshiJumpQuestionAdmin, self).save_model(request, obj, form, change)

  

當然,還需要重寫模板,把django的模板複製到應用的相應目錄下即可。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.