Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/331.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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 如何从URL django中筛选Catgery设置的blogphoto_?_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何从URL django中筛选Catgery设置的blogphoto_?

Python 如何从URL django中筛选Catgery设置的blogphoto_?,python,django,django-rest-framework,Python,Django,Django Rest Framework,你好,我创建了一个名为BlogPhoto的模型,它连接到Blog模型,我创建了一个序列化程序,其中包含create和update功能,我还有一个url,其中包含category和id包含,我想按url中的类别过滤BlogPhoto\u集。这是到目前为止我的代码 型号.py CATEGORY = [ ("vehicle-photo", _("Vehicle photo")), ("Vehicle-registration"

你好,我创建了一个名为
BlogPhoto
的模型,它连接到
Blog
模型,我创建了一个序列化程序,其中包含
create
update
功能,我还有一个url,其中包含
category
id
包含,我想按url中的类别过滤
BlogPhoto\u集
。这是到目前为止我的代码

型号.py

CATEGORY = [
    ("vehicle-photo", _("Vehicle photo")),
    ("Vehicle-registration", _("Vehicle registration")),
    ("insurance-police",_("Insurance police")),
    ("other",_("Other")),
]
class BlogPhoto(models.Model):
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE)
    blog = models.ForeignKey(Blog, models.CASCADE, verbose_name=_('blog'))
    category = models.CharField(max_length=255, choices=CATEGORY, null=True, blank=True)
    name = models.CharField(_("Description about image"),max_length=255, null=True, blank=True)
    file = models.FileField(
        _("Upload documents image"), null=True, blank=True, upload_to=generic_upload_blog, max_length=500
    )
class BlogPhotoSerializer(serializers.ModelSerializer):
    id = serializers.IntegerField(required=False)
    file = Base64ImageField(
        max_length=None,
        use_url=True,
        required=False,
        allow_null=True,
        allow_empty_file=True
    )
  
    class Meta:
        model = BlogPhoto
        exclude = ['created_by', 'blog']


    def create(self, validated_data):
        validated_data['created_by'] = self.context['request'].user
        return super().create(validated_data)


class PhotoBlogSerializer(serializers.ModelSerializer):
    blog_photo = BlogPhotoSerializer(
        many=True, source="blogphoto_set", required=False
    )

    class Meta:
        model = Blog
        fields = ["blog_photo"]

    def create(self, validated_data):
    
        if "blogphoto_set" in validated_data:
            cps = validated_data.pop("blogphoto_set")
        else:
            cps = []

        instance = super().create(validated_data)

        for cp in cps:
            instance.blogphoto_set.create(**cp)

        return instance

    def update(self, instance, validated_data):
        if 'blogphoto_set' in validated_data:
            ids_set = [ndata['id']
                       for ndata in validated_data['blogphoto_set'] if 'id' in ndata]
            instance.blogphoto_set.exclude(id__in=ids_set).delete()
            for ndata in validated_data['blogphoto_set']:
                if ndata.get('id'):
                    note = instance.blogphoto_set.get(id=ndata['id'])
                    ndata.pop('id')
                else:
                    note = BlogPhoto(
                        blog=instance, created_by=self.context['request'].user)
                for k, v in ndata.items():
                    setattr(note, k, v)
                note.save()
            validated_data.pop('blogphoto_set')

        return super().update(instance, validated_data)
url.py在URL中有一个类别,我想在queryset中使用它来获取过滤器
blogphot\u集

urlpatterns = [
    path("list/<int:pk>/<slug:category>/image/", views.BlogImagelView.as_view()),
]
序列化程序.py

CATEGORY = [
    ("vehicle-photo", _("Vehicle photo")),
    ("Vehicle-registration", _("Vehicle registration")),
    ("insurance-police",_("Insurance police")),
    ("other",_("Other")),
]
class BlogPhoto(models.Model):
    created_by = models.ForeignKey(settings.AUTH_USER_MODEL, models.CASCADE)
    blog = models.ForeignKey(Blog, models.CASCADE, verbose_name=_('blog'))
    category = models.CharField(max_length=255, choices=CATEGORY, null=True, blank=True)
    name = models.CharField(_("Description about image"),max_length=255, null=True, blank=True)
    file = models.FileField(
        _("Upload documents image"), null=True, blank=True, upload_to=generic_upload_blog, max_length=500
    )
class BlogPhotoSerializer(serializers.ModelSerializer):
    id = serializers.IntegerField(required=False)
    file = Base64ImageField(
        max_length=None,
        use_url=True,
        required=False,
        allow_null=True,
        allow_empty_file=True
    )
  
    class Meta:
        model = BlogPhoto
        exclude = ['created_by', 'blog']


    def create(self, validated_data):
        validated_data['created_by'] = self.context['request'].user
        return super().create(validated_data)


class PhotoBlogSerializer(serializers.ModelSerializer):
    blog_photo = BlogPhotoSerializer(
        many=True, source="blogphoto_set", required=False
    )

    class Meta:
        model = Blog
        fields = ["blog_photo"]

    def create(self, validated_data):
    
        if "blogphoto_set" in validated_data:
            cps = validated_data.pop("blogphoto_set")
        else:
            cps = []

        instance = super().create(validated_data)

        for cp in cps:
            instance.blogphoto_set.create(**cp)

        return instance

    def update(self, instance, validated_data):
        if 'blogphoto_set' in validated_data:
            ids_set = [ndata['id']
                       for ndata in validated_data['blogphoto_set'] if 'id' in ndata]
            instance.blogphoto_set.exclude(id__in=ids_set).delete()
            for ndata in validated_data['blogphoto_set']:
                if ndata.get('id'):
                    note = instance.blogphoto_set.get(id=ndata['id'])
                    ndata.pop('id')
                else:
                    note = BlogPhoto(
                        blog=instance, created_by=self.context['request'].user)
                for k, v in ndata.items():
                    setattr(note, k, v)
                note.save()
            validated_data.pop('blogphoto_set')

        return super().update(instance, validated_data)