您好,登錄后才能下訂單哦!
這個功能在很多地方都要用到
這里舉例的需求是在customer查看頁面中,點擊咨詢課程中的某一個課程名稱就會將這個課程與對應的同學解綁(不再顯示)
要實現(xiàn)這個需求需要新添加一條url,這條url中我們可以獲取想要解綁的課程id和表中這條記錄的主鍵方法與filter、pop等功能相同,都是在表所對應的自己的配置類中設置,從而實現(xiàn)之后這種表才有這條獨立的url
在stark.py中,我們給Customer這張表設置獨立的配置類,extra_url會返回一個url,對應的視圖函數(shù)為self.cancel_course:
class CustomerConfig(ModelStark):
#處理課程的顯示樣式和每個課程對應的url,url中帶有要解綁的課程id和表中這條記錄的主鍵id
def display_course(self, obj=None, is_header=False):
if is_header:
return "咨詢課程"
temp = []
for course_obj in obj.course.all():
s = "<a href='/stark/crm/customer/cancel_course/%s/%s' style='border:1px solid #369;padding:3px 6px'><span>%s</span></a> " % (obj.pk, course_obj.pk, course_obj.name)
temp.append(s)
return mark_safe("".join(temp))
#視圖函數(shù),實現(xiàn)點擊后刪除功能
def cancel_course(self, request, customer_id, course_id):
obj = Customer.objects.filter(pk=customer_id).first()
obj.course.remove(course_id)
#返回當前表的查看頁面
return redirect(self.get_list_url())
#新的url,點擊相應課程就會走到這條url來,這是只單獨為Customer添加一條url
def extra_url(self):
temp = []
temp.append(url(r"cancel_course/(\d+)/(\d+)", self.cancel_course))
return temp
site.register(Customer, CustomerConfig)
在sites.py中,我們設置一個通用的extra_url功能,但返回是空,所以其他表對應的url中沒有cancel_course/(\d+)/(\d+):
class ModelStark(): #配置類
def extra_url(self):
return []
#我們在二級分發(fā)中將這條url添加到temp列表中
def get_urls2(self):
#額外添加一個url
temp.extend(self.extra_url())
return temp
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。