Search code examples
djangoviewmodelquerying

multiple foreign keys to the same table but to different columns fetches models.object


i have two models which are truck and order and they have a relationship.

from django.db import models
from django.contrib.auth.models import User

class Truck (models.Model):

        truck_number = models.CharField(max_length=200);
        condition = models.CharField(max_length=20);
        insurance = models.CharField(max_length=20);
        gps_tracking = models.CharField(max_length=20);
        owner_name = models.CharField(max_length=20);
        id_number = models.IntegerField();
        telephone_number=models.IntegerField();
        driver_name=models.CharField(max_length=30, default=None);
        driver_id_number=models.IntegerField();
        driver_phone_number=models.IntegerField();
        driving_license=models.CharField(max_length=20);
        good_conduct=models.CharField(max_length=30);
        def __str__(self):
            truck_number = self.truck_number
            return truck_number



class Order(models.Model):

    truck_number= models.Foreignkey(Truck,related_name='relation_truck')
    date= models.DateField()
    product=models.CharField(max_length=30)
    depot = models.CharField(max_length=10)
    volume = models.CharField(max_length=30, blank=True)
    volume_delivered = models.CharField(max_length=30, blank=True)
    driver_name=models.ForeignKey(Truck, max_length=30,default=None)
    driver_id_number=models.ForeignKey(Truck, related_name='relation_id')
    driver_phone_number=models.ForeignKey(Truck, related_name='relation_tel')
    order_status = models.CharField(max_length=50, blank=True)
    def __str__(self):
        truck_number = self.truck_number
        return truck_number

all the fields with foreign keys are fetching the whole object Truck but not the specific value of the foreign key. like i want truck_number in Order to fetch truck_number only from table Truck and not the whole Truck object. how can i get the foreign key values instead of the the whole object.


Solution

  • Based on your comment you need something like below:

    Truck.objects.values_list('id', 'truck_number', 'driver_name', 'driver_id_number', 'driver_phone_number')