Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从新视图访问其他模型字段_Python_Django_Django Models_Django Views_Django Templates - Fatal编程技术网

Python 如何从新视图访问其他模型字段

Python 如何从新视图访问其他模型字段,python,django,django-models,django-views,django-templates,Python,Django,Django Models,Django Views,Django Templates,我正试图建立一个愿望清单,我有一个清单模型和一个愿望清单模型, 我成功地使它工作了,但 我必须首先循环所有列表,并与我的愿望列表中的产品id匹配,以便我可以访问诸如标题和图像之类的字段 有没有比在所有列表上循环直到找到匹配的列表更简单的方法呢 views.py def add_to_wishlist(request, product_id): product = WishList.objects.filter(listing_id=product_id, user=request.use

我正试图建立一个愿望清单,我有一个清单模型和一个愿望清单模型, 我成功地使它工作了,但

我必须首先循环所有列表,并与我的愿望列表中的产品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 %}
{%extensed“auctions/layout.html”%}
{%block title%}用户希望列表{%endblock%}
{%block body%}
我的愿望清单
管理你的愿望清单
{%if wishlist%}
{%用于在所有_列表中列出%}
{wishlist%中的产品为%1}
{%if listing.id==product.listing\u id%}
{{listing.title}

{{listing.description}

{{listing.start\u bid}

{%endif%} {%endfor%} {%endfor%} {%else%}

您的愿望列表中尚未添加任何产品

{%endif%} {%endblock%}
因为您将为用户获取所有
愿望列表
对象,所以您不需要收集所有
拍卖列表
对象并对其进行迭代。您可以使用返回的
WishLists
上的ID查询它们

我会这样做

views.py

def wishlist(request):
    wishlists = WishList.objects.filter(user=request.user)
    listing_ids = wishlists.values_list('listing_id', flat=True)
    listings = AuctionListing.objects.filter(pk__in=listing_ids)
    
    return render(request, "auctions/wishlist.html", {
        'wishlists': wishlists,
        'listings': listings
    })
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 wishlists and listings %}

          {% for listing in listings %}
                    <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>
         {% endfor %}
    {% else %}
        <p class="card-text">No products have been added to your wishlist yet</p>
    {% endif %}
</div>
{% endblock %}
{%extensed“auctions/layout.html”%}
{%block title%}用户希望列表{%endblock%}
{%block body%}
我的愿望清单
管理你的愿望清单
{%if-wishlists and listings%}
{%用于在清单%中列出}
{{listing.title}

{{listing.description}

{{listing.start\u bid}

{%endfor%} {%else%}

您的愿望列表中尚未添加任何产品

{%endif%} {%endblock%}
因为您将为用户获取所有
愿望列表
对象,所以您不需要收集所有
拍卖列表
对象并对其进行迭代。您可以使用返回的
WishLists
上的ID查询它们

我会这样做

views.py

def wishlist(request):
    wishlists = WishList.objects.filter(user=request.user)
    listing_ids = wishlists.values_list('listing_id', flat=True)
    listings = AuctionListing.objects.filter(pk__in=listing_ids)
    
    return render(request, "auctions/wishlist.html", {
        'wishlists': wishlists,
        'listings': listings
    })
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 wishlists and listings %}

          {% for listing in listings %}
                    <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>
         {% endfor %}
    {% else %}
        <p class="card-text">No products have been added to your wishlist yet</p>
    {% endif %}
</div>
{% endblock %}
{%extensed“auctions/layout.html”%}
{%block title%}用户希望列表{%endblock%}
{%block body%}
我的愿望清单
管理你的愿望清单
{%if-wishlists and listings%}
{%用于在清单%中列出}
{{listing.title}

{{listing.description}

{{listing.start\u bid}

{%endfor%} {%else%}

您的愿望列表中尚未添加任何产品

{%endif%} {%endblock%}
好的,你可以通过列出id和/或类似标题的方式进行搜索,你可以用模型进行筛选吗?理想情况下,你可以处理这两件事之间的一些关系。可能是一个
manytomy
,这样产品/物品就可以出现在人们的愿望清单上。这样可以更容易地显示相关数据。因为现在它看起来像是一个
愿望列表
可以存储一个数字,希望它是
AuctionListing
对象的ID,但是你必须维护这个链接并对它进行所有的健全性检查。这也意味着愿望列表只能包含1项。我已按列表id进行筛选,但如何使用我的愿望列表列表id访问AuctionListings模型字段,你可以通过列出你的id和/或类似标题的东西来搜索你的模型吗?理想情况下,你可以处理这两件事之间的一些关系。可能是一个
manytomy
,这样产品/物品就可以出现在人们的愿望清单上。这样可以更容易地显示相关数据。因为现在它看起来像是一个
愿望列表
可以存储一个数字,希望它是
AuctionListing
对象的ID,但是你必须维护这个链接并对它进行所有的健全性检查。这也意味着愿望列表只能包含1项。我已经按列表id进行了筛选,但如何使用我的愿望列表id访问AuctionListings模型字段?啊..我明白了..这很有效,我在值列表列表中添加了对象列表id=wishlist.objects.values列表('listing_id',flat=True)非常感谢!啊..我明白了..这起作用了,我已经在值列表中添加了对象,列表中列出了\u id=WishList.objects.values\u list('listing\u id',flat=True)非常感谢!