day7

三方库bpmapper的使用

from bpmappers import RawField, DelegateField,Mapper
from bpmappers.djangomodel import ModelMapper
from record.models import Record

# 只取需要的carno和owner属性
class CarMapper(Mapper):
    carno= RawField()
    owner= RawField()

# 多对一使用DelegateField
class RecordMapper(ModelMapper):
    # 多对一
    car = DelegateField(CarMapper)
    makedate = RawField()
    # 原始字段
    @staticmethod
    def filter_makedate(makedate):
        return makedate.strftime('%Y-%m-%d %H:%M')

    class Meta:
        model = Record

删除数据库表格

删除django迁移记录 ,删除表,删除数据库migrations 表记录

前端渲染

views视图函数获取数据

def search(request):
# 从模板页获取carno 页码
    carno = normalize(request.GET.get('carno',''))
    current_page = int(request.GET.get('page','1'))
    if carno:
        # 外键列关联查询
        queryset = Record.objects.filter(
                Q(car__carno=carno) | Q(car__owner__contains=carno)
            )
    else:
        queryset = Record.objects.all()
    queryset = queryset.select_related('car').order_by('-makedate')
    records,total_page = [],0
    try:

        paginator = Paginator(queryset,5)
        total_page = paginator.num_pages


        for record in paginator.page(current_page).object_list:
            records.append(RecordMapper(record).as_dict())
    except EmptyPage:
        pass
    return JsonResponse({'code':200,
                         'currentPage':current_page,
                         'totalPage':total_page,
                         'records': records
                         })
# vue获取json数据,绑定点击事件查询
const app = new Vue({
           el: '#app',
           data: {
               records: [],
               carno: '',
               currentPage: 1,
               totalPage: 0,
               loaded: false
           },
        methods: {
               getData() {
                   let carno = this.carno.trim()
                   fetch(`/search/?carno=${carno}&page=${this.currentPage}`)
                       .then(resp => resp.json())
                       .then(json => {
                           this.records = json.records
                           this.currentPage = json.currentPage
                           this.totalPage = json.totalPage
                       })
               },
change() {
                   this.loaded = false
               },
       search() {
                   this.currentPage = 1
                   this.totalPage = 0
                   this.getData()
                   this.loaded = true

               },
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容