首页 > 解决方案 > 如何从查询集中检索单个值?

问题描述

我正在尝试检索is_winning_bid返回的查询集的值:

<QuerySet [{'id': 33, 'user_id_id': 3, 'listing_id_id': 33, 'bid_amount': Decimal('13.00'), 'bid_time': datetime.datetime(2021, 4, 9, 16, 15, 9, 120168, tzinfo=<UTC>), 'is_winning_bid': False}]> 

视图.py

@login_required(login_url="/login")
def listing(request, listing_id):
    listing = Listing.objects.get(pk=listing_id)
    bids = Bid.objects.filter(listing_id=listing_id)
    user_id = request.user
    # time_posted = Comment.time_posted
    comments = Comment.objects.filter(listing_id=listing_id, user_id=user_id).order_by("-time_posted")
    current_user = request.user

    return render(request, "auctions/listing.html", {
        "listing": listing,
        "watchlist": Watchlist.objects.filter(user_id=request.user).count(),
        "current_user": current_user,
        "comments": comments,
        "bids": bids.values()
    })

模板提取:

<!DOCTYPE html>
<html lang="en">
<head>
    
</head>
<body>
    <div class="block my-3">
    <div class="row my-1">
        <div class="col-sm-2">
            {{ bids }}
        </div>
        <div class="col-sm-4">
            <strong>Number of bids:</strong> {{ listing.number_of_bids }}<br>
            <strong>Starting Bid:</strong> {{ listing.starting_bid }}<br>
            {% if listing.current_bid == 0 %}
                <strong>Current Bid:</strong> <span class="current_bid">No Bid Yet!</span><br>
            {% else %}
                <strong>Current Bid:</strong> <span class="current_bid">{{ listing.current_bid }}</span><br>
            {% endif %}
        </div>

        <div class="col-sm-5 text-center">
            <form action="{% url 'auctions:bid' listing.id %}" method="post">
                {% csrf_token %}
                <input type="number" name="bid_amount" id="bid_input" required>
                <button class="btn btn-primary" type="submit">Bid</button>
                <br>
            </form>
            <a href="{% url 'auctions:add_to_watchlist' listing.id %}" style="background-color: black"
               class="badge badge-secondary">
               Add to Watchlist
            </a>
            <div class="col-sm-2"></div>
        </div>
    </div>
</div>
</body>
</html>

标签: pythondjango

解决方案


据我了解,您只想is_winning_bid从数据库中检索值。为此,请查看以下代码。

鉴于:

bid_winnings = Bid.objects.filter(listing_id=listing_id).values('is_winning_bid')

在模板中:

{% for w in bid_winnings %}
    {{ w.is_winning_bid }}
{% endfor %}

推荐阅读