【问题标题】:Need to Fetch specific foreign key object product from database in Django需要从 Django 中的数据库中获取特定的外键对象产品
【发布时间】:2021-08-19 06:39:02
【问题描述】:

大家好,我是 Django 的新手,在电子商务网站上工作。我创建了一个模型名称类别并使用外键将其传递给模型商店。在类别模型中,我有类别 Sale,我想在我的登录页面中获取所有具有类别销售的产品,而我们其他人则在商店页面中获取。任何人请帮助我如何做到这一点? 我的model.py代码是:

class category(models.Model):
   name = models.CharField(max_length=200)
   def __str__(self):
      return self.name
class shop(models.Model):
  s_id = models.AutoField(primary_key=True)
  s_name = models.CharField(max_length=50)
  s_category = models.ForeignKey(category, on_delete= models.CASCADE)
  s_artical_no = models.IntegerField(default=0)

View.py:

def index(request):
 prod = shop.objects.get(s_category = 4) 
 params = {'prod': prod}
 return render(request, "main/index.html", params )

【问题讨论】:

    标签: django django-models django-views django-forms django-templates


    【解决方案1】:

    使用related_name 完成此操作

    class shop(models.Model):
       s_category = models.ForeignKey(category, on_delete= models.CASCADE, related_name='shop_list')
    

    views.py

    def index(request):
       specific_category = category.objects.get(id=4)
       prod = category.shop_list.all() #use related_name here
       params = {'prod': prod}
       return render(request, "main/index.html", params )
    

    提示:您的类名应遵循 UpperCaseCamelCase 约定,因此应为 Shop, Category

    【讨论】:

      【解决方案2】:

      s_categorycategory 实例,您不能传递类别 ID。首先获取“Sale”的类别对象,即

      sale_category = category.objects.get(pk=4)
      

      然后简单地使用

      prod = sale_category.shop_set.all()
      

      作为旁注,请尝试使用PEP-8 compliant class names。您命名课程的方式令人困惑

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-05-01
        • 2021-10-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-29
        相关资源
        最近更新 更多