微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我如何在 Django 3.2 中通过外键获取对象

如何解决我如何在 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 举报,一经查实,本站将立刻删除。