<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Areeba Seher</title>
    <description>The latest articles on DEV Community by Areeba Seher (@areebaseher04).</description>
    <link>https://dev.to/areebaseher04</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F612186%2F7319dc15-160d-4e50-9d06-6dcf07bf9935.png</url>
      <title>DEV Community: Areeba Seher</title>
      <link>https://dev.to/areebaseher04</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/areebaseher04"/>
    <language>en</language>
    <item>
      <title>Django Import Export From Basic To Advance</title>
      <dc:creator>Areeba Seher</dc:creator>
      <pubDate>Thu, 13 Oct 2022 13:14:54 +0000</pubDate>
      <link>https://dev.to/areebaseher04/django-import-export-from-basic-to-advance-453f</link>
      <guid>https://dev.to/areebaseher04/django-import-export-from-basic-to-advance-453f</guid>
      <description>&lt;h3&gt;
  
  
  Table of Content
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Installation and configuration&lt;/li&gt;
&lt;li&gt;Models&lt;/li&gt;
&lt;li&gt;Resources&lt;/li&gt;
&lt;li&gt;Exporting Data&lt;/li&gt;
&lt;li&gt;Exporting Data as JSON&lt;/li&gt;
&lt;li&gt;Exporting Data as CSV&lt;/li&gt;
&lt;li&gt;Data Filtering + Exporting Data&lt;/li&gt;
&lt;li&gt;Dealing with the model relationship&lt;/li&gt;
&lt;li&gt;Foreign Key Relationship&lt;/li&gt;
&lt;li&gt;Method 1: Using ForeignKeyWidget.&lt;/li&gt;
&lt;li&gt;Method 2: Using fields&lt;/li&gt;
&lt;li&gt;Many To Many Key Relationships&lt;/li&gt;
&lt;li&gt;Method 1: By data manipulation on export&lt;/li&gt;
&lt;li&gt;Method 2: By adding  ManyToManyWidget&lt;/li&gt;
&lt;li&gt;Advanced data manipulation on export.&lt;/li&gt;
&lt;li&gt;Adding new columns&lt;/li&gt;
&lt;li&gt;Changing headers before exporting&lt;/li&gt;
&lt;li&gt;Export order&lt;/li&gt;
&lt;li&gt;Admin Integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;django-import-export is a library used to handle importing and exporting of data. This package supports multiple formats.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;csv&lt;/li&gt;
&lt;li&gt;xls&lt;/li&gt;
&lt;li&gt;xlsx&lt;/li&gt;
&lt;li&gt;tsv&lt;/li&gt;
&lt;li&gt;ods&lt;/li&gt;
&lt;li&gt;json&lt;/li&gt;
&lt;li&gt;yml&lt;/li&gt;
&lt;li&gt;html
This Library also has a Django admin integration.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;For this article, I am using django==4.0 and django-import-export==2.9.0&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation and configuration
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;pip install django-import-export
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Update your settings.py file.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;INSTALLED_APPS = [
    .....
    'import_export',
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Models.
&lt;/h3&gt;

&lt;p&gt;Now add our models. Here we have 3 simple models. I am using Foreign Key and Many to Many relations to cover these in this article.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# models.py
from django.db import models


class Author(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Category(models.Model):
    name = models.CharField(max_length=100)

    def __str__(self):
        return self.name


class Book(models.Model):
    name = models.CharField('Book name', max_length=100)
    author = models.ForeignKey(Author, on_delete=models.CASCADE)
    published = models.DateField('Published')
    categories = models.ManyToManyField(Category)

    def __str__(self):
        return self.name
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now run migrations.&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;Create a new file resources.py in your app. In this file, we will add the Model Resource classes which are similar to how Django handles forms.py.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# resources.py
from import_export import resources
from .models import Author, Category, Book


class BookResource(resources.ModelResource):
    class Meta:
        model = Book
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is the simplest configuration. We can add more, like fields, and exclude in Meta just like forms.py configuration. We will discuss it below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Exporting data
&lt;/h3&gt;

&lt;p&gt;Run python manage.py shell. It will open the shell.&lt;/p&gt;

&lt;h4&gt;
  
  
  Exporting Data as JSON.
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from app.resources import BookResource

book_resource = BookResource()
data = book_resource.export()
data.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[
    {"id": 1, "name": "Django for APIs", "author": 1, "published": "2022-09-16", "categories": "2"},
    {"id": 2, "name": "Beginning Django E-Commerce", "author": 2, "published": "2022-09-16", "categories": "1,3"},
    {"id": 3, "name": "Django Unleashed", "author": 3, "published": "2022-09-16", "categories": "1,2"},
    {"id": 4, "name": "Django Design Patterns and Best Practices", "author": 4, "published": "2022-09-16", "categories": "1,4"}
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Exporting Data as CSV.
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from app.resources import BookResource

book_resource = BookResource()
data = book_resource.export()
data.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;id,name,author,published,categories
1,Django for APIs,1,2022-09-16,2
2,Beginning Django E-Commerce,2,2022-09-16,"1,3"
3,Django Unleashed,3,2022-09-16,"1,2"
4,Django Design Patterns and Best Practices,4,2022-09-16,"1,4"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Data Filtering + Exporting Data.
&lt;/h3&gt;

&lt;p&gt;We can also export the filtered data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;from app.models import Book
from app.resources import BookResource


query = Book.objects.filter(name="Django for APIs")
book_resource = BookResource()
data = book_resource.export(query)
data.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[
    {"id": 1, "name": "Django for APIs", "author": 1, "published": "2022-09-16", "categories": "2"}
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Views and URLs.
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# views.py
from django.http import HttpResponse
from .resources import BookResource


def export_csv(request):
    book_resource = BookResource()
    data = book_resource.export()
    response = HttpResponse(data.csv, content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="books.csv"'
    return response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# urls.py

from django.urls import path
from .views import export_csv

urlpatterns = [
    path('export-csv', export_csv, name='export_csv')
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Go to this URL: &lt;/p&gt;

&lt;p&gt;&lt;a href="http://127.0.0.1:8000/export-csv" rel="noopener noreferrer"&gt;http://127.0.0.1:8000/export-csv&lt;/a&gt;  (It will download the books.csv file)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqsvlkol06n9425w7x888.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqsvlkol06n9425w7x888.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Note:&lt;/strong&gt;&lt;br&gt;
For json export use content_type='application/json' and filename=books.json&lt;/p&gt;

&lt;p&gt;For excel (xslx) export use content_type='application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' and filename=books.xlsx&lt;/p&gt;

&lt;p&gt;You can check more content_type from &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types/Common_types" rel="noopener noreferrer"&gt;here&lt;/a&gt;:&lt;/p&gt;
&lt;h2&gt;
  
  
  Dealing with the model relationship.
&lt;/h2&gt;

&lt;p&gt;When defining ModelResource fields it is possible to follow model relationships:&lt;/p&gt;
&lt;h3&gt;
  
  
  1) Foreign Key Relationship.
&lt;/h3&gt;

&lt;p&gt;In the above CSV file picture, you can see that in the author column we have author ids like 1,2,3,4, not the author name.&lt;/p&gt;
&lt;h4&gt;
  
  
  1. Method 1: Using ForeignKeyWidget.
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;class import_export.widgets.ForeignKeyWidget(model, field='pk', *args, **kwargs)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;fields = 'pk' is the default lookup criterion for the lookup field. But we can customize it. As in our example, we are using field = "name" as a lookup field.&lt;/p&gt;

&lt;p&gt;I prefer this method because it's a widget so you can use this widget in any resource class.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# resources.py

from import_export import resources
from .models import Author, Category, Book
from import_export.fields import Field
from import_export.widgets import ForeignKeyWidget

class BookResource(resources.ModelResource):

    author = Field(
        column_name='author',
        attribute='author',
        widget=ForeignKeyWidget(model=Author, field='name'))

    class Meta:
        model = Book
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name,published,categories,author
Django for APIs,2022-09-16,2,William S. Vincent
Beginning Django E-Commerce,2022-09-16,"1,3",James McGaw
Django Unleashed,2022-09-16,"1,2",Andrew Pinkham
Django Design Patterns and Best Practices,2022-09-16,"1,4",Arun Ravindran
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  2. Method 2: Using fields
&lt;/h4&gt;

&lt;p&gt;Adding author__name in fields under Meta will give the author name instead of the author id.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# resources.py

class BookResource(resources.ModelResource):
    class Meta:
        model = Book
        fields = ('name', 'author__name', 'published', 'categories')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name,published,categories,author__name
Django for APIs,2022-09-16,2,William S. Vincent
Beginning Django E-Commerce,2022-09-16,"1,3",James McGaw
Django Unleashed,2022-09-16,"1,2",Andrew Pinkham
Django Design Patterns and Best Practices,2022-09-16,"1,4",Arun Ravindran
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read more from here. &lt;a href="https://www.letscodemore.com/blog/export-foreign-key-relation-in-django/" rel="noopener noreferrer"&gt;How to export Foreign key relation in django&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2) Many To Many Key Relationships.
&lt;/h3&gt;

&lt;p&gt;If we check the output then we observed that the categories column contains ids of categories like 2, "1,3" etc&lt;/p&gt;

&lt;p&gt;We have 2 methods to do this.&lt;/p&gt;

&lt;h4&gt;
  
  
  1) Method 1:  By data manipulation on export:
&lt;/h4&gt;

&lt;p&gt;We can manipulate data (any field) before exporting. We will perform some more manipulation in this article.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not all data can be easily extracted from an object/model attribute. In order to turn complicated data model into a (generally simpler) processed data structure on export, dehydrate_ method should be defined: source: &lt;a href="https://django-import-export.readthedocs.io/en/latest/getting_started.html#advanced-data-manipulation-on-export" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# resources.py

class BookResource(resources.ModelResource):

    def dehydrate_categories(self, book):
        data = []
        for i in book.categories.all():
            data.append(i.name)
        joined_string = ",".join(data)
        return str(joined_string)

    class Meta:
        model = Book
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;id,name,author,published,categories
1,Django for APIs,1,2022-09-16,Coding
2,Beginning Django E-Commerce,2,2022-09-16,"Programming,ecommerce"
3,Django Unleashed,3,2022-09-16,"Programming,Coding"
4,Django Design Patterns and Best Practices,4,2022-09-16,"Programming,Best practices"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2) Method 2: By adding ManyToManyWidget:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;class import_export.widgets.ManyToManyWidget(model, separator=None, field=None, *args, **kwargs)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I prefer this method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# resources.py

from import_export import resources
from .models import Author, Category, Book
from import_export.widgets import ManyToManyWidget
from import_export.fields import Field


class BookResource(resources.ModelResource):
    categories = Field(
        column_name='categories', attribute='categories',
        widget=ManyToManyWidget(model=Category, separator=',', field='name'))

    class Meta:
        model = Book
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;categories,id,name,author,published
Coding,1,Django for APIs,1,2022-09-16
"Programming,ecommerce",2,Beginning Django E-Commerce,2,2022-09-16
"Programming,Coding",3,Django Unleashed,3,2022-09-16
"Programming,Best practices",4,Django Design Patterns and Best Practices,4,2022-09-16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read in detail from &lt;a href="https://www.letscodemore.com/blog/how-to-export-manytomany-field-relation-in-django-import-export-using-manytomanywidget/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced data manipulation on export.
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Adding new columns.
&lt;/h3&gt;

&lt;p&gt;Let's take an example. You have 2 column names or fields i.e first name and last name. And you want to add a new column "Full Name" by combining the first and last name in the exported file.&lt;br&gt;
In our case, we are adding 2 new columns &lt;strong&gt;full_title&lt;/strong&gt; and &lt;strong&gt;description&lt;/strong&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# resources.py

class BookResource(resources.ModelResource):

    full_title = Field(column_name='Full Title')
    description = Field()

    def dehydrate_full_title(self, book):
        book_name = getattr(book, "name", "unknown")
        author_name = getattr(book.author, "name", "unknown")
        return '%s by %s' % (book_name, author_name)

    def dehydrate_description(self, book):
        book_name = getattr(book, "name", "unknown")
        author_name = getattr(book.author, "name", "unknown")
        published = getattr(book, "published", "unknown")
        return "%s is published by %s in %s" % (book_name, author_name, published)


    def dehydrate_categories(self, book):
        data = []
        for i in book.categories.all():
            data.append(i.name)
        joined_string = ",".join(data)
        return str(joined_string)

    class Meta:
        model = Book
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Full Title,description,id,name,author,published,categories
Django for APIs by William S. Vincent,Django for APIs is published by William S. Vincent in 2022-09-16,1,Django for APIs,1,2022-09-16,Coding
Beginning Django E-Commerce by James McGaw,Beginning Django E-Commerce is published by James McGaw in 2022-09-16,2,Beginning Django E-Commerce,2,2022-09-16,"Programming,ecommerce"
Django Unleashed by Andrew Pinkham,Django Unleashed is published by Andrew Pinkham in 2022-09-16,3,Django Unleashed,3,2022-09-16,"Programming,Coding"
Django Design Patterns and Best Practices by Arun Ravindran,Django Design Patterns and Best Practices is published by Arun Ravindran in 2022-09-16,4,Django Design Patterns and Best Practices,4,2022-09-16,"Programming,Best practices"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Changing headers before exporting.
&lt;/h3&gt;

&lt;p&gt;We can also change the headers before exporting our data.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# resources.py

from import_export import resources
from .models import Author, Category, Book
from .widgets import CustomManyToManyWidget
from import_export.fields import Field


class BookResource(resources.ModelResource):

    def get_export_headers(self):
        headers = super().get_export_headers()
        for i, h in enumerate(headers):
            if h == 'author':
                headers[i] = "Author"
            if h == 'name':
                headers[i] = "Book Name"
        return headers

    class Meta:
        model = Book
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;id,Book Name,Author,published,categories
1,Django for APIs,1,2022-09-16,2
2,Beginning Django E-Commerce,2,2022-09-16,"1,3"
3,Django Unleashed,3,2022-09-16,"1,2"
4,Django Design Patterns and Best Practices,4,2022-09-16,"1,4"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Export Order.
&lt;/h3&gt;

&lt;p&gt;You can set export_order in the Meta class.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# resources.py

class Meta:
        model = Book
        export_order = (
            'name', 'author', 'full_title', 'published', 'categories', 'description'
        )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;name,author,Full Title,published,categories,description
Django for APIs,William S. Vincent,Django for APIs by William S. Vincent,2022-09-16,Coding,Django for APIs is published by William S. Vincent in 2022-09-16
Beginning Django E-Commerce,James McGaw,Beginning Django E-Commerce by James McGaw,2022-09-16,"Programming,ecommerce",Beginning Django E-Commerce is published by James McGaw in 2022-09-16
Django Unleashed,Andrew Pinkham,Django Unleashed by Andrew Pinkham,2022-09-16,"Programming,Coding",Django Unleashed is published by Andrew Pinkham in 2022-09-16
Django Design Patterns and Best Practices,Arun Ravindran,Django Design Patterns and Best Practices by Arun Ravindran,2022-09-16,"Programming,Best practices",Django Design Patterns and Best Practices is published by Arun Ravindran in 2022-09-16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use exclude in the Meta class. I will recommend you go through the &lt;a href="https://django-import-export.readthedocs.io/en/latest/" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;. Because django-import-export documentation is really good and easy to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Admin Integration.
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;# admin.py

from django.contrib import admin
from import_export.admin import ImportExportModelAdmin
from .models import (Author, Category, Book)
from .resources import BookResource


admin.site.register(Author)
admin.site.register(Category)


class BookAdmin(ImportExportModelAdmin):
    resource_class = BookResource

admin.site.register(Book, BookAdmin)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then go to the admin panel. You will see the following options in the admin panel under Book Model.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9uonqr060stg660axsfp.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9uonqr060stg660axsfp.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
You can select a different format and press submit. Your data will be exported in your required format.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswkfysoe2wiytcyv21h0.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fswkfysoe2wiytcyv21h0.PNG" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
That's it for now. If you like this article then please show some love in the comment section or by supporting the content. You can also suggest more articles in the comment section. I will definitely write your suggested articles.&lt;br&gt;
Thank you.&lt;/p&gt;

&lt;h2&gt;
  
  
  If you like my post then you can support me by buying me a coffee ☕
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.buymeacoffee.com/letscodemore" rel="noopener noreferrer"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.buymeacoffee.com%2Fbuttons%2Fv2%2Fdefault-yellow.png" alt="Buy Me A Coffee"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy Coding.&lt;/p&gt;

&lt;p&gt;This artical is originally published here. &lt;a href="https://www.letscodemore.com/" rel="noopener noreferrer"&gt;https://www.letscodemore.com/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>django</category>
      <category>webdev</category>
      <category>djangoimportexport</category>
      <category>djangodevelopers</category>
    </item>
  </channel>
</rss>
