ValueError... Cannot query "User": Must be "Model" instance.

1,925 views
Skip to first unread message

Abdu-H

unread,
Sep 3, 2020, 11:16:50 AM9/3/20
to Django users

Hello,

I am working on an app where car owner will list their car and drivers interested in renting them will make a request to rent the cars…

i basically have three models the users(car owners and drivers) car listed by owners, and rent, i have a listView to list all the car available and a detailView for each car, i have a button on the detailed view, when clicked i want it to take some of the information on the detailed view and save it in the rent model… But i am getting a ValueError (Cannot query "testuser1": Must be "Listing" instance). But i also need to store the driver(testuser1 in this case) in the Rent model. 

Thanks in advance... any help is hugely appreciated

Below are my view.py, models.py and error messages:



view.py

class ListingDetailView(DetailView):

    model = Listing


    def post_rent(self, request, pk, *args, **kwargs):

        user = request.User

        listing = get_object_or_404(Listing, pk=pk)

        rent, created = Rent.objects.get_or_create(

            car_owner=listing.car_owner,

            driver=request.user,

            car_id=listing.pk)

        rent.save(request.POST)

        messages.info(request, "Rent request has been made succesfully.")

        return redirect('/')



models.py

class Listing(models.Model):

    DEF_YEAR = '2003'

    CAR_YEAR_CHOICES = [('2002', '2002'), ('2003', '2003'), ('2004', '2004'), ('2005', '2005'),

                        ('2006', '2006'), ('2007', '2007'), ('2008', '2008'), ('2009', '2009'),

                        ('2010', '2010'), ('2011', '2011'), ('2012', '2012'), ('2013', '2013'),

                        ('2014', '2014'), ('2015', '2015'), ('2016', '2016'), ('2017', '2017'),

                        ('2018', '2018'), ('2019', '2019'), ('2020', '2020'), ]


    NEW = 'New'

    USED = 'Used'

    OLD = 'Old'

    CAR_CONDITION_CHOICES = [('NEW', 'New'), ('USED', 'Used'), ('OLD', 'Old')]


    car_owner = models.ForeignKey(User, on_delete=models.CASCADE)

    car_make = models.CharField(max_length=50)

    car_model = models.CharField(max_length=50)

    car_year = models.CharField(max_length=4, choices=CAR_YEAR_CHOICES, default=DEF_YEAR)

    car_condition = models.CharField(max_length=4, choices=CAR_CONDITION_CHOICES, default=OLD)

    car_pic1 = models.ImageField(default='car.png', upload_to="car_listing-photos")

    weekly_charges = models.FloatField()


    def __str__(self):

        return f'{self.car_year}  {self.car_make}  {self.car_model}'


    def get_absolute_url(self):

        return reverse('listing-detail', kwargs={'pk': self.pk})



class Rent(models.Model):

    car_id = models.BigIntegerField(null=True, blank=True)

    car_owner = models.ForeignKey(Listing, on_delete=models.SET_NULL, null=True, blank=True)

    driver = models.ForeignKey(User, on_delete=models.SET_NULL, null=True, blank=True)

    start_date = models.DateField(null=True, blank=True)

    end_date = models.DateField(null=True, blank=True)

    approved = models.BooleanField(default=False)


listing_detail.html

<form method="POST">

    {% csrf_token %}

<button type="submit" name="hire-car" class="btn btn-primary">Rent Car</button>

 </form>



Error Message


ValueError at /listing/2/

Cannot query "testuser1": Must be "Listing" instance.


Request Method:


POST


Request URL:


http://127.0.0.1:8000/listing/2/


Django Version:


3.1


Exception Type:


ValueError


Exception Value:


Cannot query "testuser1": Must be "Listing" instance.


More Error Dump:


Environment:



Request Method: POST

Request URL: http://127.0.0.1:8000/listing/2/


Django Version: 3.1

Python Version: 3.8.5

Installed Applications:

['accounts.apps.AccountsConfig',

 'django.contrib.admin',

 'django.contrib.auth',

 'django.contrib.contenttypes',

 'django.contrib.sessions',

 'django.contrib.messages',

 'django.contrib.staticfiles',

 'app.apps.AppConfig',

 'crispy_forms']

Installed Middleware:

['django.middleware.security.SecurityMiddleware',

 'django.contrib.sessions.middleware.SessionMiddleware',

 'django.middleware.common.CommonMiddleware',

 'django.middleware.csrf.CsrfViewMiddleware',

 'django.contrib.auth.middleware.AuthenticationMiddleware',

 'django.contrib.messages.middleware.MessageMiddleware',

 'django.middleware.clickjacking.XFrameOptionsMiddleware']




Traceback (most recent call last):

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/core/handlers/exception.py", line 47, in inner

    response = get_response(request)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/core/handlers/base.py", line 179, in _get_response

    response = wrapped_callback(request, *callback_args, **callback_kwargs)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/views/generic/base.py", line 73, in view

    return self.dispatch(request, *args, **kwargs)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/views/generic/base.py", line 101, in dispatch

    return handler(request, *args, **kwargs)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/app/views.py", line 32, in post

    rent, created = Rent.objects.get_or_create(

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method

    return getattr(self.get_queryset(), name)(*args, **kwargs)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/query.py", line 573, in get_or_create

    return self.get(**kwargs), False

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/query.py", line 418, in get

    clone = self._chain() if self.query.combinator else self.filter(*args, **kwargs)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/query.py", line 942, in filter

    return self._filter_or_exclude(False, *args, **kwargs)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/query.py", line 962, in _filter_or_exclude

    clone._filter_or_exclude_inplace(negate, *args, **kwargs)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/query.py", line 969, in _filter_or_exclude_inplace

    self._query.add_q(Q(*args, **kwargs))

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1358, in add_q

    clause, _ = self._add_q(q_object, self.used_aliases)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1377, in _add_q

    child_clause, needed_inner = self.build_filter(

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1292, in build_filter

    self.check_related_objects(join_info.final_field, value, join_info.opts)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1119, in check_related_objects

    self.check_query_object_type(value, opts, field)

  File "/Users/ChuzzyOfficial/PycharmProjects/djangoProject/instarydes/.venv/lib/python3.8/site-packages/django/db/models/sql/query.py", line 1100, in check_query_object_type

    raise ValueError(


Exception Type: ValueError at /listing/2/

Exception Value: Cannot query "testuser1": Must be "Listing" instance.




Abdulhameed Giwa

unread,
Sep 3, 2020, 11:16:54 AM9/3/20
to django...@googlegroups.com

Hello,

I am working on an app where car owners will list their car and drivers interested in renting them will make a request to rent the cars…

i basically have three models the users(car owners and drivers) car listed by owners, and rent, i have a listView to list all the car available and a detailView for each car, i have a button on the detailed view, when clicked i want it to take some of the information on the detailed view and save it in the rent model… But i am getting a ValueError (Cannot query "testuser1": Must be "Listing" instance). But i also need to store the driver(testuser1 in this case) in the Rent model. 

Below are my view.py, models.py and error messages:

RANGA BHARATH JINKA

unread,
Sep 3, 2020, 11:24:42 AM9/3/20
to django...@googlegroups.com
Hi,
    Go through this. This will help you. The error is because of foreign key.

--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/4aae705a-c42b-4c94-b98b-4ed372e5a33cn%40googlegroups.com.


--
Thanks and Regards

J. Ranga Bharath
cell: 9110334114
Reply all
Reply to author
Forward
0 new messages