小编Mic*_*ter的帖子

django-rest-framework + django-polymorphic ModelSerialization

我想知道是否有人有一个将Django REST框架与django-polymorphic相结合的Pythonic解决方案.

鉴于:

class GalleryItem(PolymorphicModel):
    gallery_item_field = models.CharField()

class Photo(GalleryItem):
    custom_photo_field = models.CharField()

class Video(GalleryItem):
    custom_image_field = models.CharField()
Run Code Online (Sandbox Code Playgroud)

如果我想要一个django-rest-framework中所有GalleryItem的列表,它只会给我GalleryItem(父模型)的字段,因此:id,gallery_item_field和polymorphic_ctype.那不是我想要的.我想要custom_photo_field,如果它是一个Photo实例,我想要custom_image_field,如果它是一个视频.

python django django-rest-framework

22
推荐指数
3
解决办法
5535
查看次数

如何在 DRF 中为 read_only 和 write_only 使用不同的同名序列化器?

在 DRF 的 CreateAPI 中创建 Django 对象后,您将获得状态 201 创建,并且该对象将使用与创建 Django 对象相同的序列化器返回。

需要:创建时:Serializer.comments = Textfield(write_only=True) 和创建时(201状态)Serializer.comments = 评论列表

我知道可以通过重写 CreateAPIView.create 函数来实现。但是,我想知道是否可以通过使用序列化器字段的write_only=True属性read_only=True来实现。

目前我认为这是不可能的,因为他们都有相同的名字。我希望使用假 kwarg 名称做这样的事情actual_name

class CreateEventSerializer(serializers.ModelSerializer):
    comments_readonly = serializers.SerializerMethodField(read_only=True, actual_name='comments')

class Meta:
    model = Event
    fields = ('id', 'comments', 'comments_readonly')

def __init__(self, *args, **kwargs):
    super(CreateEventSerializer, self).__init__(*args, **kwargs)
    self.fields['comments'].write_only = True

def get_comments_readonly(self, obj):
    comments = obj.comments.replace('\r', '\n')
    return [x for x in comments.split('\n') if x != '']
Run Code Online (Sandbox Code Playgroud)

但这样,返回的 JSON 仍然包含键“comments_readonly”,而不是所需的键“comments”。

使用最新的DRF,3.7.1 …

django serialization django-rest-framework

5
推荐指数
1
解决办法
1812
查看次数

如何在javascript中的数组列表中的数组中获取值

要填充HTML选择字段,我有以下数据:

let options = [
 {'label': '--Choose--', 'value':''},
 {'label': 'Linux', 'value':'linux'},
 {'label': 'OSX', 'value':'mac'},
 {'label': 'Windows 98', 'value':'win9x'},
 {'label': 'Windows XP', 'value':'winxp'}
]
Run Code Online (Sandbox Code Playgroud)

现在使用值'mac',我想获得标签'OSX'.

是否有可能以优雅的方式在JSX中使用此数组的值获取标签?

例如'mac'应该给'OSX'

我有ES6/ReactJS/Underscore/jQuery可用.

javascript arrays javascript-objects ecmascript-6 reactjs

0
推荐指数
1
解决办法
66
查看次数