Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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
Django 如何在URL中发送信息?_Django_Django Forms_Url Encoding - Fatal编程技术网

Django 如何在URL中发送信息?

Django 如何在URL中发送信息?,django,django-forms,url-encoding,Django,Django Forms,Url Encoding,我正在尝试创建一个产品过滤器。 我正在URL中发送用户选择 如果用户选择size=L,则使用request.GET 我收到: {'size':['L']} 但是我想收到:{'size':{'op':'in','attri':'L'} 这可能吗? 请帮忙 我的模特是 class ProductAttribute(models.Model): slug = models.SlugField(max_length=50, unique=True) name = models.CharF

我正在尝试创建一个产品过滤器。 我正在URL中发送用户选择 如果用户选择size=L,则使用
request.GET

我收到:
{'size':['L']}

但是我想收到:
{'size':{'op':'in','attri':'L'}

这可能吗? 请帮忙

我的模特是

class ProductAttribute(models.Model):
    slug = models.SlugField(max_length=50, unique=True)
    name = models.CharField(max_length=100)
    op = models.CharField(max_length=20,default='in')

    class Meta:
        ordering = ('slug', )

    def __str__(self):
        return self.name

    def get_formfield_name(self):
        return slugify('attribute-%s' % self.slug, allow_unicode=True)

    def has_values(self):
        return self.values.exists()


class AttributeChoiceValue(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(max_length=100)
    attribute = models.ForeignKey(
        ProductAttribute, related_name='values', on_delete=models.CASCADE)

    class Meta:
        unique_together = ('name', 'attribute')

    def __str__(self):
        return self.name


class Product(models.Model):
    name = models.CharField(max_length=128)
    attributes = HStoreField(default={})



q2 = AttributeChoiceValue.objects.filter(attribute__name='size')
我的大小过滤器(filter.py)是:

我目前正在使用以下查询在views.py中筛选我的数据库

result = Product.objects.all()

for key, value in request.GET:result = result.filter(**{'attributes__{}__in'.format(key): value})
我想去

a=request.GET
for key, value in a:
result = result.filter(**{'attributes__{}__{}'.format(key,a['op']): value})
因此,如果我甚至使用价格范围作为过滤器,我的查询过滤器将相应地

attributes__price__range

您可以通过“路径转换器”向视图发送信息:

或使用正则表达式:

什么是
“op”:“in”
它来自哪里?你能说得更具体些吗?
attributes__price__range