Skip to content

Latest commit

 

History

History

views

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

views:

export.py - Содержит CBV(Class Based View) с реализованным экспортом под различные разширения

class GoodsCustomExportCsvView(CustomExportCsvView):

    def get(self, request, store_id):
        store = get_object_or_404(Store, pk=store_id)
        return self.export(Goods.objects.filter(store=store), self.get_filename(store))


    def get_column_names(self, *args, **kwargs):

        return [

            'NAME',
            'QUANTITY',
            'COAST',
            'DESCR',
            'DELIVERY DATE',
            
        ]

    def trans_obj_to_row(self, obj, *args, **kwargs):

        return [
            obj.name,
            obj.quantity,
            obj.coast,
            obj.delivary_date,
        ]

    def get_filename(self, store):
        return f"{store.name}__{datetime.date.today()}__goods.csv"


class GoodsLazyExportCsvView(LazyExportCsvView):
    fields = # Оставить пустым для вывода всех полей, ('field1', 'field2', 'field3' ... ) для вывода определенных
    objects = None
    
    def get_queryset(self):
        store = self.get_objects()
        return Goods.objects.filter(store=store)

    def get_objects(self):
        if not self.objects:
            self.objects = get_object_or_404(Store, self.kwargs.get('store_id'))
        return self.get_objects()
    
    def get_filename(self):
        return f"{self.get_objects()}__{datetime.date.today()}__goods.csv"

Разница между этими двумя классами по сути в том, что в первом название и контент в столбцах определяется в ручную, а во втором это делается автоматически