Django访问ForeignKey字段并获取其值

问题描述 投票:0回答:1

我正在尝试构建一个小型网上商店平台,用户可以在其中创建商店,选择产品类别并向其中添加产品。

为了实现我的目标,我创建了这个简化的模型。py

class Organization(models.Model):
    org_id = models.AutoField(primary_key=True)
    company_name = models.CharField(max_length=255)
    owned_by = models.OneToOneField(UserProfile, on_delete=models.CASCADE)

    def __str__(self):
        return f'{self.company_name} ORG'

    def get_absolute_url(self):
        return reverse('org-view', kwargs={'pk': self.org_id})

class Category(models.Model):
    CATEGORIES = ( ('electric', 'Electronics'), ('food', 'FrozenFood'), ('shoes', 'slippers') )
    cat_name = models.CharField(max_length=255, choices=CATEGORIES)
    def __str__(self):
        return f'{self.cat_name} Category'

    def get_absolute_url(self):
        return reverse('cat-view', kwargs={'id': self.pk})

class Product(models.Model):
    org_id = models.ForeignKey(Organization, on_delete=models.CASCADE, blank=True, null=True)
    cat_name = models.ForeignKey(Category, on_delete=models.CASCADE)
    product_name = models.CharField(max_length=255)

    def __str__(self):
        return self.product_name

在我看来,我想让用户停留在一个页面上,以便他可以管理自己的商店。

我当前的views.py:

class OrganizationDetailView(LoginRequiredMixin, UserPassesTestMixin, DetailView, FormMixin):
    model = Organization
    queryset = Organization.objects.all()
    template_name = 'org/org_view.html'
    form_class = ProductForm


    def test_func(self):
        org = self.get_object()
        if self.request.user.profile == org.owned_by:
            return True
        return False

    def get(self, request, *args, **kwargs):
        self.object = self.get_object()
        context = self.get_context_data()
        pk = self.object.serializable_value('pk')
        product = Product.objects.filter(org_id=pk)
        return self.render_to_response(context)

我需要帮助来了解一些事情:

  1. 如何执行查询以检索他的所有产品并能够查看产品所属的类别。

我的糟糕解决方案:product变量包含该商店的所有产品,包括指向类别pk的cat_name_id。很好,但是我需要类别的名称。我需要这样的东西:print(product.category_name)并且我应该看到'Electronics'

  1. 如何执行将同一类别下的项目分组在一起的查询。

我已经花了几天的时间试图理解那些查询,所以请像我五岁那样解释一下>>

我正在尝试构建一个小型网上商店平台,用户可以在其中创建商店,选择产品类别并向其中添加产品。为了实现我的目标,我创建了这个简化的模型。py类...

python django
1个回答
0
投票

您可以使用以下命令过滤一个用户的所有产品:

© www.soinside.com 2019 - 2024. All rights reserved.