Я хочу добиться этого: API для получения всех продуктов для категории.
Models.py
class Category(models.Model):
main_category = models.CharField(max_length=200, default = '')
def __str__(self):
return '%s' % (self.main_category)
class Subcategory(models.Model):
category = models.ForeignKey(Category, on_delete=models.CASCADE)
sub_category = models.CharField(max_length=200, default = '')
def __str__(self):
return '%s' % (self.sub_category)
class Products(models.Model):
sub_category = models.ForeignKey(Subcategory, on_delete=models.CASCADE)
product_name = models.CharField(max_length=200, default = '')
def __str__(self):
return '%s' % (self.product_name)
Views.py
class ProductCategoryFilter(django_filters.FilterSet):
category = django_filters.CharFilter(name="category__main_category")
class Meta:
model = Products
fields = ['category']
class ProductCategoryListAPIView(ListAPIView):
queryset = Products.objects.all()
serializer_class = ProductCategorySerializer
filter_class = ProductCategoryFilter
Serializers.py
class ProductCategorySerializer(ModelSerializer):
#category_name = serializers.CharField(source='category.main_category')
category_name = CategorySerializer(source='category_set')
class Meta:
model = Products
fields = [
'category_name',
'product_name',
]
AttributeError в /api/productcategories/
Я получаю AttributeError
при попытке получить значение для поля category_name
в сериализаторе ProductCategorySerializer
. Поле сериализатора может иметь неправильное имя и не соответствовать ни одному атрибуту или ключу в экземпляре Products
.
Исходный текст исключения: Объект "Продукты" не имеет атрибута "категория".
И я хочу, чтобы результат был таким:
[
{
"category_name": "main category 1",
"product_name": "product 1"
},
{
"category_name": "main category 1",
"product_name": "product 2"
},..........
ИЛИ выводить так:
[
{
"main category 1" :{ "product 1", "product 2"...}
Когда вы получили ошибку атрибута? Что ты пытался сделать?
Я пытался получить прямую выходную связь между моделью категории и моделью продукта, не показывая поля модели подкатегории.
Один человек ответил на это на портале facebook hastebin.com/pafugudimi.scala
и фильтрацию можно выполнить следующим образом: hastebin.com/misepeqada.py