Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.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 - Fatal编程技术网

Python 如何从物品的外键中获取标题

Python 如何从物品的外键中获取标题,python,django,Python,Django,当我将产品添加到wishlist时,我试图从项目模型中获取标题 class Item(models.Model): title = models.CharField(max_length=250) def __str__(self): return self.title class Wishlist(models.Model): user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE) it

当我将产品添加到wishlist时,我试图从项目模型中获取标题

class Item(models.Model):
title = models.CharField(max_length=250)

def __str__(self):
    return self.title

class Wishlist(models.Model):
user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE)
item = models.ForeignKey(Item, on_delete=models.CASCADE)
added_date = models.DateTimeField(auto_now_add=True)

class Meta:
    db_table = 'Wishlist'
    verbose_name_plural = 'Wishlists'

def __str__(self):
    return self.item.title

@login_required
def wishlist(request):
wishlist = Wishlist.objects.all()

context = {
    'wishlist': wishlist,
}
return render(request,'wishlist.html', context)
我尝试了这个模板,但没有工作

{% for object in wishlist.item.all %}
 <h1>{{ object.item.title }}</h1>
{% endfor %}
{%用于wishlist.item.all%中的对象]
{{object.item.title}
{%endfor%}

由于
愿望列表
愿望列表
的集合,因此您应该像这样迭代:

{% for object in wishlist %}
 <h1>{{ object.item.title }}</h1>
{% endfor %}
{%for wishlist%中的对象}
{{object.item.title}
{%endfor%}

话虽如此,在
项目
愿望列表
之间定义多对多关系可能更有意义,因为
愿望列表
愿望列表
的集合,您应该像这样迭代:

{% for object in wishlist %}
 <h1>{{ object.item.title }}</h1>
{% endfor %}
{%for wishlist%中的对象}
{{object.item.title}
{%endfor%}

也就是说,在
项目
愿望列表
之间定义多对多关系可能更有意义。我将Foreignkey更改为多对多关系,当我将产品添加到愿望列表时,我得到了这个结果。“禁止直接分配到多对多集合的前端。请改用item.set()。”如何解决此问题?@Hi3e:正如错误所述,保存
Wishlist
,然后使用
Wishlist.item.add(my_item)
。但是,我建议您首先查看文档,看看它是否符合您的需要:def add_to_wishlist(request,slug):item=get_object_或_404(item,slug=slug)wish_item,created=wishlist.objects.get_或_create(item=item,user=request.user,)wish_item.item.add(wish_item)wish_item.save()messages.info(请求,“项目已添加到您的愿望列表”)返回重定向(“shop:wishlist”)这显示“禁止直接分配到多对多集合的前端。改为使用item.set()。”从
获取或创建(…)
中删除
项目=项目,并替换
希望的项目.item.add(希望的项目)
带有
所希望的\u item.item.add(item)
。您是对的!但是模板还有一个问题。这是行不通的。{%for wishlist%}{{object.item.title}{%endfor%}我将Foreignkey更改为ManyToMany关系,当我向wishlist添加一个产品时,我得到了这个结果。“禁止直接分配到多对多集合的前端。请改用item.set()。”如何解决此问题?@Hi3e:正如错误所述,保存
Wishlist
,然后使用
Wishlist.item.add(my_item)
。但是,我建议您首先查看文档,看看它是否符合您的需要:def add_to_wishlist(request,slug):item=get_object_或_404(item,slug=slug)wish_item,created=wishlist.objects.get_或_create(item=item,user=request.user,)wish_item.item.add(wish_item)wish_item.save()messages.info(请求,“项目已添加到您的愿望列表”)返回重定向(“shop:wishlist”)这显示“禁止直接分配到多对多集合的前端。改为使用item.set()。”从
获取或创建(…)
中删除
项目=项目,并替换
希望的项目.item.add(希望的项目)
带有
所希望的\u item.item.add(item)
。您是对的!但是模板还有一个问题。这是行不通的。{%for wishlist%}{{object.item.title}}{%endfor%}