Django জ্যাঙ্গো
  • Python Basic
  • Python OOP
  • OOP Project
  • Jupyter Notebook
  • Python MOngodb
  • Numpy
  • Pandas
  • Framework কি?
  • জ্যাঙ্গো ওয়েব ফ্রেমওয়ার্ক
  • ভার্চুয়াল এনভায়র্নমেন্ট
    • ভার্চুয়াল এনভায়র্নমেন্ট তৈরী করি :
    • জ্যাংগো ইন্সটল
  • প্রথম প্রজেক্ট শুরু
    • সেটিংস পরিচিতি
    • Template
      • load css,js
        • template load
    • create project
  • অ্যাপস কি?
    • প্রথম অ্যাপস তৈরি
  • apps কে প্রজেক্টের সাথে যুক্ত করি
  • এইচটিএমএল টেমপ্লেট নিয়ে কাজ করি
    • স্ট্যাটিক ফাইল ও টেম্পলেট
    • Hompage পরিবর্তন করি
    • বেস টেমপ্লেট বানাই
    • html টেম্পলেট কে কনভার্ট করি
    • Template Tags
    • Context Processor
  • Urls
  • urls.py এ প্যারামিটার কিভাবে কাজ করে
  • message
  • Forms
    • সাধারণ একটি ফর্ম বানাই
    • ফর্ম লে আউট পরিবর্তন
    • বুটস্ট্রাপ ফর্ম
    • মডেল ফর্ম
      • Form Customization
  • models
    • মডেল বানাই
    • মাইগ্রেশন
    • মডেল ভ্যালিডেশন করা
    • মডেল কাস্টমাইজ
  • Crud
    • image Crud Admin Panel
    • Custom Crud
      • form design bootstrap
      • search Functionality
      • menu
    • File Upload App
    • Image Crud
    • Class view Crud
  • Django Authentication
    • Login/Logout(Default)
    • Registration Page(Default )
    • Profile UpdateView (Default)
    • Change Password (Default)
    • Custom Login And Registration
    • Protecting View
  • Custom Field User Model
  • Formset
    • Page 1
    • formset Crud
  • Send Email
    • Send Email From Gmail
      • Send Email With Attachment
    • Email Verification
  • Uploading Images to Cloudinary
  • Database Connection
    • MySQL
    • postgresql
  • Django Orm
    • Basic Database Operation
      • -all()
      • - get():
      • - first() and last():
      • - filter():
      • - exclude():
      • Chaining Queries
      • Creating, Updating, and Deleting Records
      • Aggregation
      • Annotation
    • Model Relationships and Related Names
      • One-to-One Relationships
      • Many-to-One Relationships
      • Many-to-Many Relationships
      • Reverse Relationships
      • Understanding related_name
    • Advanced Querying with Django ORM
      • Chaining Queries
      • F() Expressions
      • Q() Objects
        • Dynamic Search
      • Raw SQL Queries
    • Performance Optimization with Django ORM
      • Select Related
    • Django সিগন্যাল :
  • requirement.txt
  • channels
    • Create Project
    • কনফিগার
  • Send SMS in Django
    • Configuration
  • Mysql Setup
  • অ্যাডমিন প্যানেলে
    • Site Heading And Title Change
    • মডেলকে অ্যাডমিন প্যানেলে যোগ করি
    • মডেলকে একবার সেভ করা যাবে
    • এডমিন প্যানেলে পিডিএফ এক্সপোর্ট বাটন যোগ করি
    • মডেল ফর্ম কাস্টোমাইজ করি
    • মডেলের html টেম্পলেট পরিবর্তন করি
    • ফিল্ড এর ডিজাইন বুটস্ট্রাপ ফরম্যাটে হবে
    • টেবিল বেসড ফর্মসেট এপ্লিকেশন
    • নির্দিষ্ট ইউজারকে মডেলে এক্সেস পারমিশন দেয়া
    • অ্যাডমিন প্যানেলে জাভাস্ক্রিপ্ট ও css ফাইল যোগ করা
    • fetch data
    • bill of materials
  • Django Rest Framework
    • ভার্চুয়াল এনভায়র্নমেন্ট
    • প্রজেক্ট তৈরী করি
    • মডেলকে প্রস্তুত করি
    • serializer
    • Validation
    • Api তৈরী করি (api_view)
    • Api তৈরী করি (viewsets)
    • JsonResponse তৈরি করি
    • authentication
    • Reactjs
  • প্যাকেজ নিয়ে কাজ করি
    • Tinymce Editor
    • highlight.js
    • Social Login
      • Facebook
      • Github
      • google
    • Select2
      • admin panel
    • CELERY
    • Autocomplete Show Multiple Fields
      • Autocomplete Search
  • Mongodb
    • basic models,forms,views
    • Category Crud
      • Category List
      • Create Category
      • Edit Category
      • Delete Category
      • Link Button list.html
    • Tags Crud
      • Tags List
      • Create Tags
      • Edit Tags
      • Delete Tags
      • Link Button list.html
    • Post
      • Post List
      • Create Post
        • Tinymc
      • Post Details
      • Edit Post
      • Delete Post
      • Link Button list.html
      • Search
    • Comment
      • Post Details
    • Formset Crud
      • Models.py
      • forms.py
      • views
      • urls.py
      • Author
        • author_list
        • create_author
        • Edit Author
        • Delete Author
        • Link Button
      • BookFormset
    • Rest Api
    • Image Upload
  • Redis
  • chart
  • Deployment
    • Pythonanywhere
    • Cpanel Host
  • Reactjs
Powered by GitBook
On this page
  1. অ্যাডমিন প্যানেলে

fetch data

Previousঅ্যাডমিন প্যানেলে জাভাস্ক্রিপ্ট ও css ফাইল যোগ করাNextbill of materials

Last updated 1 year ago

models.py

from django.db import models
from django.utils import timezone

class SalesOrderInfo(models.Model):
    order_number = models.PositiveIntegerField(default=1, unique=True)
    customername = models.CharField(max_length=50)
    address = models.CharField(max_length=50)
    created = models.DateTimeField(default=timezone.now)


    def __str__(self):
        return f"SalesOrderInfo: {self.order_number}"

class SalesOrderDelivery(models.Model):
    order_info = models.ForeignKey(SalesOrderInfo, on_delete=models.CASCADE, null=True, default=None)
    item = models.CharField(max_length=50)
    quantity = models.PositiveIntegerField(default=0)
    price = models.DecimalField(max_digits=10, decimal_places=2)
  

    def __str__(self):
        return f"SalesOrderDelivery: {self.item} - {self.quantity}"

class DeliveryOrderInfo(models.Model):
    sales_order_number = models.PositiveIntegerField()
    customername = models.CharField(max_length=50)
    address = models.CharField(max_length=50)

    def __str__(self):
        return f"DeliveryOrderInfo: {self.sales_order_number}"

class DeliveryOrderItem(models.Model):
    delivery_order_info = models.ForeignKey(DeliveryOrderInfo, on_delete=models.CASCADE)
    item = models.CharField(max_length=50)
    quantity = models.PositiveIntegerField(default=0)

    def __str__(self):
        return f"DeliveryOrderItem: {self.item} - {self.quantity}"

set static file configuration

STATIC_URL = 'static/'
STATICFILES_DIRS = [
    BASE_DIR / 'static',
]
STATIC_ROOT=(BASE_DIR/ "assets/")

MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'assets/media/')

admin.py

from django.contrib import admin
from django.forms import inlineformset_factory
from .models import (
    SalesOrderInfo,
    SalesOrderDelivery,
    DeliveryOrderInfo,
    DeliveryOrderItem,
)

class SalesOrderDeliveryInline(admin.TabularInline):
    model = SalesOrderDelivery

class SalesOrderInfoAdmin(admin.ModelAdmin):
    inlines = [SalesOrderDeliveryInline]

class DeliveryOrderItemInline(admin.TabularInline):
    model = DeliveryOrderItem

class DeliveryOrderInfoAdmin(admin.ModelAdmin):
    inlines = [DeliveryOrderItemInline]

    class Media:
        js = ('js/fetch_sales_order_info.js',)
        defer = True  # Add the defer attribute

admin.site.register(SalesOrderInfo, SalesOrderInfoAdmin)
admin.site.register(DeliveryOrderInfo, DeliveryOrderInfoAdmin)

views.py

from django.shortcuts import render
from django.http import HttpResponse

# Create your views here.


def index (request):
    return HttpResponse('h')

from django.http import JsonResponse
from django.views.decorators.csrf import csrf_exempt
from .models import SalesOrderInfo, SalesOrderDelivery

@csrf_exempt
def get_sales_order_info(request):
    if request.method == 'POST':
        sales_order_number = request.POST.get('sales_order_number')
        try:
            sales_order_info = SalesOrderInfo.objects.get(order_number=sales_order_number)
            data = {
                'customername': sales_order_info.customername,
                'address': sales_order_info.address,
            }
            return JsonResponse(data)
        except SalesOrderInfo.DoesNotExist:
            return JsonResponse({})
@csrf_exempt
def get_sales_order_info(request):
    if request.method == 'POST':
        sales_order_number = request.POST.get('sales_order_number')
        try:
            sales_order_info = SalesOrderInfo.objects.get(order_number=sales_order_number)
            data = {
                'customername': sales_order_info.customername,
                'address': sales_order_info.address,
            }
            return JsonResponse(data)
        except SalesOrderInfo.DoesNotExist:
            return JsonResponse({})



@csrf_exempt
def fetch_sales_order_delivery(request):
    order_number = request.GET.get('order_number')
    sales_order_info = SalesOrderInfo.objects.filter(order_number=order_number).first()

    if not sales_order_info:
        raise Http404("Sales order not found")

    sales_order_delivery_items = SalesOrderDelivery.objects.filter(order_info=sales_order_info)
    unique_items = sales_order_delivery_items.values('item').distinct()
    items = [{'item': item['item'], 'quantity': sales_order_delivery_items.filter(item=item['item']).values('quantity').first()['quantity']} for item in unique_items]

    return JsonResponse(items, safe=False)

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('',views.index,name='index'),
    path('get_sales_order_info/', views.get_sales_order_info, name='get_sales_order_info'),
    
    path('fetch_sales_order_delivery/', views.fetch_sales_order_delivery, name='fetch_sales_order_delivery'),

]

static/js/fetch_sales_order_info.js

(function($) {
    $(document).ready(function() {
      $('#id_sales_order_number').on('change', function() {
        var orderno = $(this).val();
        if (orderno) {
          $.ajax({
            type: 'POST',
            url: '/myapp/get_sales_order_info/',
            data: {
              'sales_order_number': orderno,
              'csrfmiddlewaretoken': '{{ csrf_token }}'
            },
            success: function(data) {
              if (data.customername) {
                $('#id_customername').val(data.customername);
                $('#id_address').val(data.address);
              } else {
                $('#id_customername').val('');
                $('#id_address').val('');
              }
            },
            error: function() {
              // Handle error case
            }
          });
        } else {
          $('#id_customername').val('');
          $('#id_address').val('');
        }
      });
    });
  })(jQuery);
  
  
  
  (function($) {
  $(document).ready(function() {
    $('#id_sales_order_number').on('change', function() {
      var orderno = $(this).val();
      if (orderno) {
        fetchSalesOrderDelivery(orderno); // Call the function to fetch delivery items
      }
    });

    // Function to fetch sales order delivery items
    function fetchSalesOrderDelivery(orderno) {
      $.ajax({
        type: 'GET',
        url: '/myapp/fetch_sales_order_delivery/',
        data: {
          'order_number': orderno
        },
        success: function(data) {
          populateSelectBoxes(data);
        },
        error: function() {
          // Handle error case
        }
      });
    }

    // Function to populate select boxes with fetched data
    function populateSelectBoxes(data) {
      $('.dynamic-deliveryorderitem_set select[id^="id_deliveryorderitem_set-"][id$="-item"]').each(function() {
        var selectBox = $(this);
        selectBox.empty(); // Clear existing options

        $.each(data, function(index, item) {
          selectBox.append($('<option></option>').attr('value', item.item).text(item.item));
        });
      });
    }
  });
})(jQuery);













  

13KB
myapp.zip
archive