Как сравнить данные из двух моделей в Modelform Django

Я создаю сайт аукциона типа ebay, где пользователи могут делать ставки на понравившийся им товар, и если ставка выше, чем последняя ставка, то отображаемая сумма ставки обновляется до самой новой ставки.

Я хочу запустить проверку на modelform, чтобы сравнить первую сумму (которую ввел человек, создавший объявление) с последней ставкой (которую ввел новый пользователь).

Проблема в том, что они находятся в двух разных моделях, и я не уверен, как проверить обе без ошибки

FORMS.PY

class BidForm(forms.ModelForm):

    class Meta:
        model = Bids
        fields = ['new_bid']
        labels = {
            'new_bid': ('Bid'),
        }


    def clean_new_bid(self):
        new_bid = self.cleaned_data['new_bid']
        current_bid = self.cleaned_data['current_bid']


        if new_bid <= current_bid:
            error = ValidationError("New bid must be greater than the previous bid")
            self.add_error('new_bid', error)
        return new_bid

MODELS.PY

class Auction(models.Model):
    title = models.CharField(max_length=25)
    description = models.TextField()
    current_bid = models.IntegerField(null=False, blank=False)
    image_url = models.URLField(verbose_name="URL", max_length=255, unique=True, null=True, blank=True)
    created_at = models.DateTimeField(auto_now_add=True)
    category = models.ForeignKey(Category, max_length=12, null=True, blank=True, on_delete=models.CASCADE)
    is_active = models.BooleanField(default=True)
    user = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

    class Meta:
        ordering = ['-created_at']


class Bids(models.Model):
    auction = models.ForeignKey(Auction, on_delete=models.CASCADE, related_name='bidding', null=True)
    user = models.ForeignKey(User, on_delete=models.PROTECT, related_name='bidding')
    new_bid = models.IntegerField()
    done_at = models.DateTimeField(auto_now_add=True)

VIEWS.PY

@login_required
def make_bid(request, listing_id):
    auction = Auction.objects.get(pk=listing_id)
    user = request.user
    if request.method == 'POST':
        bid_form = BidForm(request.POST)
        if bid_form.is_valid(): 
            new_bid = request.POST['new_bid']
            current_price = Bids.objects.create(
                listing_id = listing_id,
                user = user,
                new_bid = new_bid
            )
            messages.success(request, 'Successfully added your bid')
            return HttpResponseRedirect(reverse("listing_detail", args=(listing_id,)))


        else:
            bid_form = BidForm(request.POST) 
            return render(request, 'auctions/details.html', {"bid_form": bid_form})  
                
    return render(request, 'auctions/details.html', bid_form = BidForm()) 

DETAILS.HTML

                            <p>{{ detail.description }}</p>
                            <hr>
                            <p>Current price: ${{detail.current_price}}</p>

                            <form action="{% url 'make_bid' detail.id %}" method="post">
                                {% csrf_token %}
                                {{ form.non_field_errors }}
                                {{ form.errors }}
                                {{ bid_form }}
                                <input type="submit" class="btn btn-primary btn-block mt-3" value="Place bid">
                            </form>

У меня такая ошибка

KeyError at /make_bid/2

"current_bid"

Request Method: POST
Request URL: http://127.0.0.1:8000/make_bid/2

Я уверен, что это потому, что я пытаюсь сравнить две разные модели, но не знаю лучшего способа сделать это. Не могли бы вы направить меня или есть лучший способ запустить этот процесс проверки ставок?

Вернуться на верх