【发布时间】:2021-03-21 21:50:25
【问题描述】:
我正在尝试建立一个愿望清单,我有一个清单模型和一个愿望清单模型, 我已经成功地让它工作了,但是..
我必须先遍历所有列表,并与我的愿望清单中的产品 ID 匹配,这样我才能访问标题和图像等字段..
有没有比遍历所有列表直到找到匹配的列表更简单的方法?
views.py
def add_to_wishlist(request, product_id):
product = WishList.objects.filter(listing_id=product_id, user=request.user.username)
if product:
product.delete()
else:
product = WishList()
product.listing_id = product_id
product.user = request.user.username
product.save()
return HttpResponseRedirect(request.META['HTTP_REFERER'])
def wishlist(request):
product = WishList.objects.filter(user=request.user)
all_listings = AuctionListing.objects.all()
return render(request, "auctions/wishlist.html", {
'wishlist': product,
'all_listings': all_listings
})
models.py
class AuctionListing(models.Model):
title = models.CharField(max_length=100)
description = models.TextField()
start_bid = models.IntegerField(null=True)
image = models.CharField(max_length=1000, blank=True)
category = models.CharField(max_length=100)
seller = models.CharField(max_length=100, default="Default_Value")
class WishList(models.Model):
user = models.CharField(max_length=64)
listing_id = models.IntegerField()
wishlist.html
{% extends "auctions/layout.html" %}
{% block title %}Users Wishlist {% endblock %}
{% block body %}
<div class="col-12 mx-auto">
<h1 class="h3">My Wishlist</h1>
<div>Manage your wishlist</div>
{% if wishlist %}
{% for listing in all_listings %}
{% for product in wishlist %}
{% if listing.id == product.listing_id%}
<div class="card-mb-3">
<div class="row g-0">
<div class="col-md-4">
<img src="{{ listing.image }}" class="img-responsive" >
</div>
<div class="col-md-8">
<div class="card-body">
<h5 class="card-title">{{listing.title}}</h5>
<p class="card-text"> {{listing.description}}</p>
<p class="card-text"><small class="text-muted">{{listing.start_bid}}</small></p>
</div>
</div>
</div>
</div>
{% endif %}
{% endfor %}
{% endfor %}
{% else %}
<p class="card-text">No products have been added to your wishlist yet</p>
{% endif %}
</div>
{% endblock %}
【问题讨论】:
-
好吧,你能不能只通过listing_id 和/或你会用你的模型过滤的标题之类的东西进行搜索?
-
理想情况下,您可以处理两件事之间的一些关系。可能是
ManyToMany,以便产品/列表可以存在于人们的愿望清单中。这样可以更容易地显示有问题的数据。因为目前看起来WishList可以存储一个数字,希望它是AuctionListing对象的ID,但是您必须维护该链接并围绕它进行所有健全性检查。这也意味着愿望清单只能包含一项。 -
我已按listing_id 过滤,但如何使用我的愿望清单listing_id 访问AuctionListings 模型字段?
标签: python django django-models django-views django-templates