Я пытаюсь создать небольшую платформу интернет-магазина, где пользователь может создать магазин, выбрать категорию товаров и добавить товары к нему.
Чтобы достичь своей цели, я создал этот упрощенный models.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)
I нужна помощь, чтобы понять несколько вещей:
- как выполнить запросы, чтобы получить все его продукты и увидеть категорию, к которой принадлежит продукт.
Мое плохое решение: переменная product содержит все товары для этого магазина, включая cat_name_id, который указывает на категорию pk. Это хорошо, но мне нужно название категории. мне нужно что-то вроде этого: print (product.category_name), и я должен увидеть «Электроника»
как выполнить запрос, который группирует элементы в одной категории.
Я уже потратил несколько дней, пытаясь понять эти запросы, поэтому, пожалуйста, объясните, как мне пять