Italiano
Apri in Telegram

Post recourse.py

9 marzo 2024
O
Omadbek Qosimov's blog
RispostaFoto
recourse.py from import_export import resources, fields from .models import Order from import_export.widgets import ForeignKeyWidget,ManyToManyWidget from apps.depreciation.models import DepreciationItem from apps.profile.models import User class OrderResource(resources.ModelResource): customer = fields.Field( column_name='Customer Name', attribute='user', widget=ForeignKeyWidget(User, 'id')) saler = fields.Field( column_name='Saler Name', attribute='user', widget=ForeignKeyWidget(User, 'id')) depreciation = fields.Field(column_name="Depreciation") category = fields.Field(column_name='Category name') class Meta: model = Order fields = ('id', 'status', 'customer','price','category','depreciation','created_at') def dehydrate_category(self, order): return order.product.depreciation_cat.title def dehydrate_depreciation(self, order): deprecation = DepreciationItem.objects.get(office = order.product.office,category = order.product.depreciation_cat) return f"year:{deprecation.year}, office: {deprecation.office.title}, percantage: {deprecation.percentage}" def dehydrate_customer(self, order): if order.user: return f"{order.user.first_name} {order.user.last_name}" return order.user.username def dehydrate_saler(self, order): if order.saler: return order.saler.get_full_name() if order.saler.get_full_name() else order.saler.username return "" admin.py @admin.register(Order) class OrderAdmin(AdminChartMixin, ImportExportModelAdmin): list_display = ('product', 'user', 'status', 'created_at', 'updated_at') list_filter = ('status', 'created_at', 'updated_at') list_editable = ('status', ) list_chart_type = "pie" list_chart_data = {} list_chart_options = {"aspectRatio": 6} list_chart_config = None readonly_fields = ('saler',) resource_class = OrderResource def get_list_chart_data(self, queryset): if not queryset: return {} data = queryset.values('status').annotate(count=Count('id')) labels = [entry['status'] for entry in data] counts = [entry['count'] for entry in data] return { "labels": labels, "datasets": [ { "data": counts, "backgroundColor": [ "#79aec8", "#b6d6f2", "#aac3e4", "#8aafd4", ][:len(labels)], }, ], } def save_model(self, request, obj, form, change): if obj.status == 'purchased' and not obj.saler: obj.saler = request.user super().save_model(request, obj, form, change) pip install django-import-export #csv #admin
197 ·

Vicino nel feed

OOmadbek Qosimov's bloghttps://dateutil.readthedocs.io/en/stable/ delta between days #delta #months #daysOOmadbek Qosimov's blogFoto
questo messaggio
OOmadbek Qosimov's blogfor m2m changing for pre_save signal #m2m #pre_save #bugOOmadbek Qosimov's blogOrder by property but its not optimization code #property , #filter
OOmadbek Qosimov's blogOmadbek Qosimov's blog@python_Oqdev · canale · Tecnologia
28iscritti145post nell'indice
Feed della community Apri in Telegram

Un feed pubblico aperto dall'indice di ricerca ChatCrawler — «Google per il Telegram pubblico»; si aggiorna man mano che la community viene scansionata. Orari in UTC.

Solo contenuti pubblici, API ufficiale di Telegram. Informazioni · FAQ · Limiti dell'indice · Rimuovi una pagina · Catalogo · Ricerca · Come calcoliamo