Maitri Patel
Maitri Patel

Reputation: 30

Getting referenced object in QuerySet instead if model data

I want to fetch data from models. But I am getting Reference Object in QuerySet instead of actual data.

This is my 3 model from which I want to fetch data.

class Residence(models.Model):
    residence_name = models.CharField(max_length=30)
    residence_address = models.CharField(max_length=30)
    residence_city = models.CharField(max_length=20)
    residence_state = models.CharField(max_length=20)
    residence_pincode = models.IntegerField()
    description = models.CharField(max_length=255)
    rent = models.IntegerField()
    image = models.ImageField(upload_to='Images')


class Facility(models.Model):
    residence_id = models.ForeignKey('Residence', on_delete=models.CASCADE)
    facility_type = models.CharField(max_length=30)


class Residence_type(models.Model):
    residence_id = models.ForeignKey('Residence', on_delete=models.CASCADE)
    residence_type = models.CharField(max_length=7)

This is my class in view.py in which I have to fetch data from Django-models

def view_all(request):

    residenceList = Residence.objects.all()
    typeList = Residence_type.objects.all()
    facilityList = Facility.objects.all()

    residenceDict = {
    "Residence": residenceList,
    "Type": typeList,
    "Facility": facilityList
    }

    print(residenceList);
    print(typeList);
    print(facilityList);

    return render(request, 'view-all.html', residencedict)

I didn't get any data. Because when I try to print the data in the console I get Reference Objects in QuerySet instead of model data.

   <QuerySet [<Residence: Residence object (1)>, <Residence: Residence object (2)>]>
   <QuerySet [<Residence_type: Residence_type object (1)>, <Residence_type: Residence_type object (2)>]>
   <QuerySet [<Facility: Facility object (1)>, <Facility: Facility object (2)>]>

I want the data in QuerySet and not the reference object.

Here my code of HTML template. I don't know ho to print those data from dict to HTML template. I am using key value pair in dict and for loop in HTML template.

           <table class="grid-table">
                <tr>
                    <th>Name</th>
                    <th>Address</th>
                    <th>Description</th>
                    <th>Rent</th>
                    <th>Facility</th>
                    <th>Residence Type</th>
                    <th>Image</th>
                </tr>
                {% for residence, type, facility in Residence.items %}
                <tr>
                    <td>{{ residence.residence_name }}</td>
                    <td>{{ residence.residence_address residence.residence_city residence.residence_pincode }}</td>
                    <td>{{ residence.description }}</td>
                    <td>{{ residence.rent }}</td>
                    <td>{{ facility.facility_type }}</td>
                    <td>{{ type.residence_type }}</td>
                    <td>{{ residence.image }}</td>
                </tr>
                {% endfor %}
            </table>

Upvotes: 0

Views: 126

Answers (1)

Aayush Agrawal
Aayush Agrawal

Reputation: 1394

Replace

residenceList = Residence.objects.all()
typeList = Residence_type.objects.all()
facilityList = Facility.objects.all()

With

residenceList = Residence.objects.values()
typeList = Residence_type.objects.values()
facilityList = Facility.objects.values()

Upvotes: 1

Related Questions