如何解决我如何在 Django 3.2 中通过外键获取对象
我正在为 Irvine
类构建菜单项,并希望按 Category
models.py
class Irvine(models.Model):
objects = None
name = models.CharField(max_length=50,verbose_name='Irvine Item')
description = models.TextField(null=True,blank=True)
size = models.FloatField(null=True,blank=True)
price = models.FloatField(null=True,blank=True)
published = models.DateTimeField(auto_Now_add=True,db_index=True)
category = models.ForeignKey('Category',null=True,on_delete=models.PROTECT,verbose_name='Category')
def __str__(self):
return self.name
class Meta:
verbose_name_plural = 'Irvine'
verbose_name = 'Irvine Item'
ordering = ['-published']
class Category(models.Model):
objects = None
name = models.CharField(max_length=30,db_index=True,verbose_name="Category")
published = models.DateTimeField(auto_Now_add=True,db_index=True)
def __str__(self):
return self.name
class Meta:
verbose_name_plural = '* Categories'
verbose_name = 'Category'
ordering = ['name']
view.py
def irvine(request):
irvine = Irvine.objects.all()
context = {'irvine': irvine}
return render(request,'cafe/irvine.html',context)
def by_category(request,category_id):
santaanna = SantaAnna.objects.filter(category=category_id)
costamesa = CostaMesa.objects.filter(category=category_id)
irvine = Irvine.objects.filter(category=category_id)
categories = Category.objects.all()
current_category = Category.objects.get(pk=category_id)
context = {'santaanna': santaanna,'categories': categories,'costamesa': costamesa,'irvine': irvine,'current_category': current_category}
return render(request,'cafe/by_category.html',context)
urls.py
urlpatterns = [
path('add/',ItemsCreateView.as_view(),name='add'),path('<int:category_id>/',by_category,name='by_category'),path('',index,name='index'),path('irvine',irvine),
与
{% for i in irvine %}
{}
<tr class="danger">
<th scope="row" width="20%">{{ i.name }}</th>
<td width="60%">{{ i.description }}</td>
<td width="10%">{{ i.size }}</td>
<td width="10%">{{ i.price }}</td>
</tr>
{% endfor %}
我可以从 Irvine 课程中获取所有物品,但是如何按类别从该课程中获取物品
解决方法
您不能直接使用 i.category
进行检查,因为它具有值列表。
尝试使用 i.category.name
。
如果你有序列化器,请更新完整代码。
{% for i in irvine %} {% if i.category.name == 'Appetizers' %}
,它会起作用
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。