Django: Невозможно назначить « »:« Booking.b_price »должен быть экземпляром« Loader_post » - PullRequest
0 голосов
/ 28 мая 2020

Привет, я работаю над проектом, в котором водитель добавляет цену в сообщение пользователя ... теперь пользователь может принять и отклонить предложение .... когда пользователь принимает предложение, он выполняет бронирование, но после отправки формы выдает ошибку

это мой models.py

class Booking(models.Model):
    post =  models.ForeignKey(Loader_post, 
     related_name='b_price',on_delete=models.CASCADE,default='',null=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE,  null=True, default='')
    approved_price = models.BooleanField(default=False)
    pay = models.CharField(max_length=30, default='')
    mode = models.CharField(max_length=30 ,default='')

это мой views.py

class booking_approve(CreateView, LoginRequiredMixin):
    form_class = forms.booking_form
    model = Booking
    template_name = "confirm_booking.html"
    success_url = reverse_lazy("Loader:post")

def form_valid(self, form,*args, **kwargs):
    booking = get_object_or_404(Booking, pk=self.kwargs.get('pk'))
    print(form.cleaned_data)
    bk = form.save(commit=False)
    bk.user = self.request.user
    bk.post = booking
    bk.save()
    return super().form_valid(form)

это мой urls.py

path('confirm_booking/<int:pk>/booking',views.booking_approve.as_view(), name="booking_approve"),

this это моя html страница

{% for loader_post in request.user.Loader.all %}
{% for price in loader_post.prices.all %}
    <img src="{{loader_post.image_of_load.url }}" alt="Avatar" style="width:100%; height: 25%; 
    margin-bottom: 10px; ">
    <h4><b>Post id : {{loader_post.id }}</b></h4>
    <p>Driver offer : <i class="fa fa-inr" aria-hidden="true"></i>{{price.driver_price }}</p>
    <p>Offer by : {{price.driver_name }}</p>
    <a style="margin-right:20px;" href="{% url 'Loader:booking_remove' pk=loader_post.pk %}"><i 
     class="fa fa-times fa-4x" style="color: red;" aria-hidden="true"></i></a>
    <a href="{% url 'Loader:booking_approve' pk=loader_post.pk %}"><i class="fa fa-check-circle fa- 
         4x" aria-hidden="true"></i></a>
 </div>
 </div>
 {% endfor %} {% endfor %}

это ошибка в моих представлениях

error

1 Ответ

1 голос
/ 28 мая 2020

Замените эту строку:

booking = get_object_or_404(Booking, pk=self.kwargs.get('pk'))

на:

booking = get_object_or_404(Loader_post, pk=self.kwargs.get('pk'))

Потому что ранее вы пытались назначить объект бронирования другому объекту бронирования. Вместо этого это должен быть объект Loader_post. Также я вижу, что вы отправляете первичный ключ Loader_post в качестве аргумента url.

...