Django的Admin配置

from .models import Food, Menu

from django.contrib import admin


class FoodAdmin(admin.ModelAdmin):
    #顯示內(nèi)容
    list_display = ('foodname', 'company')
    list_filter = ('company',)
    fieldsets = (
        (None, {'fields': ('foodname', 'img', 'score', 'score_times')}),
    )

    #有條件的查詢,若為超級用戶,則返回全部,否則只返回自己所在部門
    def get_queryset(self, request):
        qs = super().get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(company=request.user.company)

    # 自動(dòng)更新,創(chuàng)建時(shí)將用戶部門自動(dòng)更新為自己所在部門
    def save_model(self, request, obj, form, change):
        obj.company = request.user.company
        super().save_model(request, obj, form, change)


class MenuAdmin(admin.ModelAdmin):
    #顯示內(nèi)容
    list_display = ('date_time','company')
    list_filter = ('company',)
    fieldsets = (
        (None, {'fields': ('date_time', 'breakfast','lunch','dinner')}),
    )
    filter_horizontal = ('breakfast','lunch','dinner')

    #有條件的查詢,若為超級用戶,則返回全部,否則只返回自己所在部門
    def get_queryset(self, request):
        qs = super().get_queryset(request)
        if request.user.is_superuser:
            return qs
        return qs.filter(company=request.user.company)

    # 自動(dòng)更新,創(chuàng)建時(shí)將用戶部門自動(dòng)更新為自己所在部門
    def save_model(self, request, obj, form, change):
        obj.company = request.user.company
        super().save_model(request, obj, form, change)

    #多對多的列表過濾
    def formfield_for_manytomany(self, db_field, request, **kwargs):
        if db_field.name == 'breakfast' or db_field.name =='lunch' or db_field.name =='dinner':
            kwargs["queryset"] = Food.objects.filter(company=request.user.company)
            from django.contrib.admin import widgets
            kwargs['widget'] = widgets.FilteredSelectMultiple(
                db_field.verbose_name,
                db_field.name in self.filter_vertical
            )
        return super(MenuAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)





admin.site.register(Food, FoodAdmin)
admin.site.register(Menu, MenuAdmin)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容