django admin實現(xiàn)后臺多用戶隔離

很多人說django自帶的后臺只能用來做管理,其實簡單的多用戶發(fā)布需求還是可以用自帶的admin模塊來做的。核心是使用request.user獲取當(dāng)前登錄用戶揪垄,然后根據(jù)用戶篩選后臺顯示內(nèi)容。

復(fù)雜的用戶權(quán)限管理使用django-guardian等組件

模擬了一個根據(jù)用戶每天輸入的數(shù)據(jù),生成可視化報表的項目优俘。預(yù)想的是根據(jù)不同的報表類型,預(yù)設(shè)不同的數(shù)據(jù)模板掀序。前端請求的時候發(fā)送報表類型和數(shù)據(jù)范圍用戶等信息到后端帆焕。后端返回數(shù)據(jù)后交給前端echart處理。

花了整個下午才完成基本的后臺不恭,因為目的是實現(xiàn)多用戶叶雹,后面的部分有空再去寫。

  1. 先設(shè)置一般用戶的group换吧,配置好權(quán)限折晦,所有新建用戶都是用一般的權(quán)限。權(quán)限設(shè)置看文檔
  2. 隔離列表頁
    列表頁隔離沾瓦,使用get_queryset方法满着,這個比較好實現(xiàn),資料也多
class NoteAdmin(admin.ModelAdmin):
    def get_queryset(self,request):
        qs = super(NoteAdmin,self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        # 此處user為當(dāng)前model的related object的related object贯莺, 正常的外鍵只要filter(user=request.user)
        return qs.filter(fordata__user=request.user)
    list_display = ('title','fordata')
    search_fields = ('title','fordata')
  1. 隔離增加和修改數(shù)據(jù)時顯示的related object項目

![HTZMQ)4(7BXHAD`K~F]QSLR.png](http://upload-images.jianshu.io/upload_images/923222-cb82053c32efc77e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

創(chuàng)建和修改model時风喇,會顯示關(guān)聯(lián)的外鍵的所有的值,比如顯示出所有的用戶來了缕探。使用get_form方法隱藏外鍵字段(例如user),save_model設(shè)置user默認值魂莫,也別忘了列表頁的篩選get_queryset

class CustomTypeAdmin(admin.ModelAdmin):
    def save_model(self,request,obj,form,change):
        obj.user = request.user
        obj.save()

    def get_form(self,request,obj=None,**kwargs):
        self.exclude = ("user",)
        form = super(CustomTypeAdmin,self).get_form(request, obj, **kwargs)
        return form
    fields = ('typename','ordernum')
    list_display = ('typename','ordernum')
    list_editable = ('ordernum',)
    def get_queryset(self,request):
        qs = super(CustomTypeAdmin,self).get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(user=request.user)

附:最基本的幾個model代碼

class CustomType(models.Model):
    typename = models.CharField(max_length=50,verbose_name='報表名')
    user = models.ForeignKey(User,verbose_name='用戶',on_delete=models.CASCADE)
    ordernum = models.IntegerField()
    def __unicode__(self):
        return self.typename
    class Meta:
        verbose_name = '報告分類'
        verbose_name_plural = '報告分類'
class DailyData(models.Model):
    add_date = models.DateField(default=timezone.now,verbose_name='日期')
    record = models.FloatField(verbose_name='數(shù)據(jù)')
    user = models.ForeignKey(User,verbose_name='用戶',on_delete=models.CASCADE)
    type = models.ForeignKey(CustomType,verbose_name='類型',on_delete=models.CASCADE)
    def __unicode__(self):
        return '%s / %s / %s' % (self.add_date.strftime('%Y-%m-%d'),self.type,self.record)
    class Meta:
        verbose_name = '數(shù)據(jù)'
        verbose_name_plural = '數(shù)據(jù)'
class Note(models.Model):
    title = models.CharField(max_length=50,verbose_name='簡述')
    note = models.TextField(verbose_name='備注')
    fordata = models.ForeignKey(DailyData,verbose_name="備注給",on_delete=models.CASCADE)
    def __unicode__(self):
        return self.title

    class Meta:
        verbose_name = '事件記錄'
        verbose_name_plural = '事件記錄'
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市爹耗,隨后出現(xiàn)的幾起案子耙考,更是在濱河造成了極大的恐慌,老刑警劉巖潭兽,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件倦始,死亡現(xiàn)場離奇詭異,居然都是意外死亡讼溺,警方通過查閱死者的電腦和手機楣号,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人炫狱,你說我怎么就攤上這事藻懒。” “怎么了视译?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵嬉荆,是天一觀的道長。 經(jīng)常有香客問我酷含,道長鄙早,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任椅亚,我火速辦了婚禮限番,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呀舔。我一直安慰自己弥虐,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布媚赖。 她就那樣靜靜地躺著霜瘪,像睡著了一般。 火紅的嫁衣襯著肌膚如雪惧磺。 梳的紋絲不亂的頭發(fā)上颖对,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音磨隘,去河邊找鬼缤底。 笑死,一個胖子當(dāng)著我的面吹牛琳拭,可吹牛的內(nèi)容都是我干的训堆。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼白嘁,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了膘流?” 一聲冷哼從身側(cè)響起絮缅,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎呼股,沒想到半個月后耕魄,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡彭谁,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年吸奴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡则奥,死狀恐怖考润,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情读处,我是刑警寧澤糊治,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站罚舱,受9級特大地震影響井辜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜管闷,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一境输、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧顿乒,春花似錦卧波、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至呕臂,卻和暖如春破托,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背歧蒋。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工土砂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人谜洽。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓萝映,卻偏偏與公主長得像,于是被迫代替她去往敵國和親阐虚。 傳聞我的和親對象是個殘疾皇子序臂,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容