Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django fixture中格式错误的十六进制uuid字符串错误_Python_Django - Fatal编程技术网

Python Django fixture中格式错误的十六进制uuid字符串错误

Python Django fixture中格式错误的十六进制uuid字符串错误,python,django,Python,Django,我一直在做这个项目,我想按类别id名称过滤所有_产品,但当我这样做时,它会给我一个格式错误的十六进制UUID字符串错误。 这是models.py from django.db import models import uuid # Create your models here. class Category(models.Model): category = models.CharField(max_length=100) id = models.UUIDField(prima

我一直在做这个项目,我想按类别id名称过滤所有_产品,但当我这样做时,它会给我一个格式错误的十六进制UUID字符串错误。 这是models.py

from django.db import models
import uuid
# Create your models here.
class Category(models.Model):
    category = models.CharField(max_length=100)
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

    def __str__(self):
        return self.category

class Product(models.Model):
    title = models.CharField(max_length=100)
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    image = models.FileField(default=None)
    desc = models.TextField(default="Random")
    price = models.DecimalField(max_digits=10, decimal_places=2)
    vnos = models.CharField(max_length=30)
    quantity = models.BigIntegerField()
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)
    times_bought = models.BigIntegerField(default=0)

    def __str__(self):
        return self.title
和视图.py

def category_detail(request, category_id):
    try:
        current_category = Category.objects.get(pk=category_id)
    except Product.DoesNotExist:
        raise Http404("Album does not exist.")
    current_category_name = current_category.category
    template = loader.get_template('categories/details.html')
    all_products = Product.objects.all()
    products_by_category = Product.objects.all().filter(category=str(current_category_name))
    footer = loader.get_template('main/footer.html')
    head = loader. get_template('main/head.html')
    nav = loader.get_template('main/nav.html')
    all_categories = Category.objects.all()

    paginator = Paginator(all_products, 6)

    page = request.GET.get('page')
    try:
        all_products = paginator.page(page)
    except PageNotAnInteger:
        all_products = paginator.page(1)
    except EmptyPage:
        all_products = paginator.page(paginator.num_pages)

    context = {
        'all_products': all_products,
        'all_categories': all_categories,
        'footer': footer,
        'head': head,
        'nav': nav,
        'products_by_category': products_by_category
    }

    return HttpResponse(template.render(context, request))
我尝试过不同的方法,但没有什么真正的帮助。我想在单击某个链接时按类别名称筛选产品

当我试图激怒变量时,会出现错误

{% for product in products_by_category %}

如果我不按类别对产品使用过滤器,它运行正常。

按类别过滤
产品
模型时,应使用类别实例,而不是类别名称

products_by_category = Product.objects.filter(category=current_category)

注意:在
filter()

之前,您不需要调用
all()
,这不是问题所在,因为您的问题中没有包含完整的回溯。这是代码中唯一调用
filter()
的地方,所以如果它不在这里,您认为问题是什么?您是对的,但它在uuid中给了我一个错误,不是因为我遗漏了
all()
我没有说您必须删除
all()
,只是因为不需要它,所以您可以从代码中删除它。错误是因为您试图使用非uuid的
str(当前类别名称)
进行筛选。你应该像我上面所说的那样使用
current\u category
。谢谢,我认为它实际上解决了你应该捕获
category的问题。DoesNotExist:
当你尝试获取
category.objects.get(pk=category\u id)
时。是的,这是一个输入错误,因为我有一个产品,但仍然非常感谢