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:




*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.

-- 
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 [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CADgDKzzvLYRx8TFo8Z2Kxf3RKUUV1eD-LTt%2Bot25Mcb5gLvBTQ%40mail.gmail.com.

Reply via email to