How to use values of data in Foriegn key while importing in django import export

Viewed 24

i want to ask how to use values of the foreign key while importing data from csv file in Django import export library.? Thanks in advance , the main issue i am having is I have to import a csv file containing the data of the model that has foreign keys in it. the overall architecture is something like this: the Main model is:

class Reservation(models.Model):
    company = models.ForeignKey(company_models.CompanyProfileModel, null=True, blank=True, on_delete=models.CASCADE)
    reservation_status = models.CharField(max_length=35, null=True, blank=True, choices=status_types,default=REQUESTED)
    reservation_no = models.CharField(max_length=40, null=True, blank=True)
    client = models.ForeignKey(PersonalClientProfileModel, null=True, blank=True, on_delete=models.SET_NULL)
    service_type = models.ForeignKey(setting_models.ServiceType, on_delete=models.SET_NULL, null=True, blank=True)
    sales_tax = models.ForeignKey('setting.SalesTax', on_delete=models.CASCADE, null=True, blank=True)
    charge_by = models.CharField(max_length=50, choices=charge_by, null=True, blank=True)
    pay_by = models.CharField(max_length=50, choices=payment_type, null=True, blank=True,verbose_name='Payment Method')
    vehicle_type = models.ForeignKey(setting_models.VehicleType, on_delete=models.SET_NULL, null=True, blank=True)
    vehicle = models.ForeignKey(Vehicle, null=True, blank=True, on_delete=models.SET_NULL)
    driver = models.ForeignKey(EmployeeProfileModel, null=True, blank=True, on_delete=models.SET_NULL)
    accepted_by_driver = models.BooleanField(null=True, blank=True, default=False)
    pickup_address = models.ForeignKey(GeoAddress, on_delete=models.SET_NULL, related_name='pickup_address',null=True,blank=True)
    destination_address = models.ForeignKey(GeoAddress, on_delete=models.SET_NULL, related_name='destination_address',null=True, blank=True)
    # pickup_address = models.CharField(max_length=200, null=True, blank=True)
    # destination_address = models.CharField(max_length=200, null=True, blank=True)
    pick_up_date = models.DateField(blank=True, null=True)
    pick_up_time = models.TimeField(blank=True, null=True)
    distance_in_miles = models.FloatField(null=True, blank=True, default=0.0)
    distance_covered_in_ride = models.FloatField(null=True, blank=True, default=0.0)
    total_hours = models.CharField(max_length=10, null=True, blank=True)
    from_date = models.DateField(null=True, blank=True)
    to_date = models.DateField(null=True, blank=True)
    no_of_days = models.IntegerField(null=True, blank=True, default=0)
    rate_per_mile = models.FloatField(null=True, blank=True, default=0.0)
    rate_per_day = models.FloatField(null=True, blank=True, default=0.0)
    additional_passenger_charge = models.FloatField(null=True, blank=True, default=0.0)
    additional_luggage_charge = models.FloatField(null=True, blank=True, default=0.0)
    additional_stops_charge = models.FloatField(null=True, blank=True, default=0.0)
    stops_between_ride = models.IntegerField(null=True, blank=True, default=0)
    stops_address = models.ManyToManyField(GeoAddress, blank=True)
    passenger_quantity = models.IntegerField(blank=True, null=True, default=1)
    luggage_bags_quantity = models.IntegerField(blank=True, null=True, default=0)
    car_seats = models.IntegerField(blank=True, null=True)
    client_notes = models.CharField(max_length=150, null=True, blank=True)
    driver_notes = models.CharField(max_length=200, blank=True, null=True)
    discount_percentage = models.FloatField(null=True, blank=True, max_length=100, default=0.0)
    gratuity_percentage = models.FloatField(null=True, blank=True, max_length=100, default=0.0)
    fuel_Surcharge_percentage = models.FloatField(null=True, blank=True, max_length=100, default=0.0)
    sales_tax_percentage = models.FloatField(null=True, blank=True, default=0.0)
    tolls = models.FloatField(null=True, blank=True, default=0.0)
    meet_and_greet = models.FloatField(null=True, blank=True, default=0.0)
    duration = models.CharField(max_length=10, choices=get_duration_choices(25), null=True, blank=True)
    base_fare = models.FloatField(blank=True, null=True, default=0.0)
    deposit_amount = models.FloatField(null=True, blank=True, default=0.0)
    deposit_type = models.CharField(max_length=100, choices=deposit_types, null=True, blank=True)
    balance_fare = models.FloatField(null=True, blank=True, default=0.0)
    balance_paid = models.BooleanField(null=True, blank=True, default=False)
    total_fare = models.FloatField(blank=True, null=True, default=0.0)
    cheque_no = models.CharField(max_length=40, null=True, blank=True)
    is_duplicated = models.BooleanField(null=True, blank=True, default=False)
    sales_tax_payment = models.ForeignKey(Accounting.Tax.models.SalesTaxPayment, on_delete=models.SET_NULL, null=True,blank=True)
    airport = models.CharField(max_length=100, null=True, blank=True)
    airline = models.CharField(max_length=100, null=True, blank=True)
    flight_num = models.CharField(max_length=100, null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True, null=True)
    updated_at = models.DateField(auto_now=True, null=True)

in this ** company field is related with CompanyProfileModel with ForeignKey then in CompanyProfileModel we have userprofile that is related with UserProfileModel with OneToOne realtion then in userprofile we have user that is related with User model with Foreign Key **

here is my Resource Function:

class ReservationResourceForImport(resources.ModelResource):
    class Meta:
        model = reservation_models.Reservation
        exclude = ['distance_in_miles', 'total_hours', 'from_date', 'to_date', 'no_of_days', 'rate_per_mile',
                   'rate_per_day', 'additional_passenger_charge', 'additional_luggage_charge',
                   'additional_stops_charge', 'stops_between_ride', 'stops_address', 'discount_percentage',
                   'gratuity_percentage', 'fuel_Surcharge_percentage', 'sales_tax_percentage', 'tolls',
                   'meet_and_greet', 'duration', 'base_fare', 'deposit_amount', 'deposit_type', 'balance_fare',
                   'balance_paid', 'cheque_no', 'accepted_by_driver', 'distance_covered_in_ride', 'car_seats',
                   'is_duplicated', 'sales_tax_payment', 'created_at', 'updated_at',
                   "sales_tax",
                   "charge_by", "pay_by", 'client_notes', 'driver_notes']
        export_order = (
            "id", "company", "reservation_no", "client", "reservation_status",
            "pick_up_date", "pick_up_time",
            "pickup_address", "destination_address", "vehicle",
            "driver", "service_type", "vehicle_type", "passenger_quantity", "luggage_bags_quantity",
            "total_fare")

All going well if i import the data in the csv with the ID of foreign key like this:

ID ,Company ,Reservation_data, Client 3 , 4 , 23/09/2022 , 2 but i want to import the data with the names of the data for instance: ID , Company , Reservation_data , Client** 3 , company_name , 23/09/2022 , client_name**

and company_name will get through :

company > userprofile > user > username and for client: client > userprofile > user > username

please give a solution how to user names of the fields while importing data in django import export

regards,

0 Answers
Related