本文整理汇总了Python中rest_framework.serializers.ManyRelatedField方法的典型用法代码示例。如果您正苦于以下问题:Python serializers.ManyRelatedField方法的具体用法?Python serializers.ManyRelatedField怎么用?Python serializers.ManyRelatedField使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类rest_framework.serializers
的用法示例。
在下文中一共展示了serializers.ManyRelatedField方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: update_relationship_from_serializer
# 需要导入模块: from rest_framework import serializers [as 别名]
# 或者: from rest_framework.serializers import ManyRelatedField [as 别名]
def update_relationship_from_serializer(self, rv, field_instance, foreign_key_as_list):
if not isinstance(field_instance, (relations.PrimaryKeyRelatedField, relations.ManyRelatedField,
relations.SlugRelatedField)):
return
if not hasattr(field_instance, 'queryset') or field_instance.queryset is None:
return
related_model = field_instance.queryset.model
if not foreign_key_as_list:
self.update_related_endpoint(rv, related_model)
else:
if not hasattr(field_instance, 'queryset') or field_instance.queryset is None:
return
# FIXME: we may not need this code as the serializer field has a 'choices' attribute
self.set_choices_from_qs(rv, field_instance.queryset)
示例2: get_related_field
# 需要导入模块: from rest_framework import serializers [as 别名]
# 或者: from rest_framework.serializers import ManyRelatedField [as 别名]
def get_related_field(field):
if isinstance(field, ManyRelatedField):
return field.child_relation
if isinstance(field, ListSerializer):
return field.child
return field
示例3: is_related_many
# 需要导入模块: from rest_framework import serializers [as 别名]
# 或者: from rest_framework.serializers import ManyRelatedField [as 别名]
def is_related_many(field):
if hasattr(field, "many"):
return field.many
if isinstance(field, ManyRelatedField):
return True
if isinstance(field, ListSerializer):
return True
return False
示例4: _get_related_fields
# 需要导入模块: from rest_framework import serializers [as 别名]
# 或者: from rest_framework.serializers import ManyRelatedField [as 别名]
def _get_related_fields(self, fields, id_field):
return [k for (k, v) in fields
if k != id_field
and (isinstance(v, HyperlinkedRelatedField)
or isinstance(v, HyperlinkedIdentityField)
or isinstance(v, ItemLinkField)
or (isinstance(v, ManyRelatedField)
and isinstance(v.child_relation, HyperlinkedRelatedField)))]
示例5: get_field_info
# 需要导入模块: from rest_framework import serializers [as 别名]
# 或者: from rest_framework.serializers import ManyRelatedField [as 别名]
def get_field_info(self, field):
"""
Given an instance of a serializer field, return a dictionary
of metadata about it.
"""
field_info = OrderedDict()
field_info['type'] = self.label_lookup[field]
field_info['required'] = getattr(field, 'required', False)
attrs = [
'read_only', 'label', 'help_text',
'min_length', 'max_length',
'min_value', 'max_value'
]
for attr in attrs:
value = getattr(field, attr, None)
if value is not None and value != '':
field_info[attr] = force_text(value, strings_only=True)
if getattr(field, 'child', None):
field_info['child'] = self.get_field_info(field.child)
elif getattr(field, 'fields', None):
field_info['children'] = self.get_serializer_info(field)
if (not field_info.get('read_only') and
not isinstance(field, (serializers.RelatedField, serializers.ManyRelatedField)) and
hasattr(field, 'choices')):
field_info['choices'] = [
{
'value': choice_value,
'display_name': force_text(choice_name, strings_only=True)
}
for choice_value, choice_name in field.choices.items()
]
return field_info
示例6: get_read_only
# 需要导入模块: from rest_framework import serializers [as 别名]
# 或者: from rest_framework.serializers import ManyRelatedField [as 别名]
def get_read_only(self, name, field_instance):
if name == '__str__':
return True
if field_instance.read_only and not isinstance(field_instance, serializers.ManyRelatedField):
return True
return False
示例7: get_field_info
# 需要导入模块: from rest_framework import serializers [as 别名]
# 或者: from rest_framework.serializers import ManyRelatedField [as 别名]
def get_field_info(self, field):
"""
Given an instance of a serializer field, return a dictionary
of metadata about it.
"""
field_info = OrderedDict()
serializer = field.parent
if isinstance(field, serializers.ManyRelatedField):
field_info['type'] = self.type_lookup[field.child_relation]
else:
field_info['type'] = self.type_lookup[field]
try:
serializer_model = getattr(serializer.Meta, 'model')
field_info['relationship_type'] = self.relation_type_lookup[
getattr(serializer_model, field.field_name)
]
except KeyError:
pass
except AttributeError:
pass
else:
field_info['relationship_resource'] = get_related_resource_type(field)
field_info['required'] = getattr(field, 'required', False)
attrs = [
'read_only', 'write_only', 'label', 'help_text',
'min_length', 'max_length',
'min_value', 'max_value', 'initial'
]
for attr in attrs:
value = getattr(field, attr, None)
if value is not None and value != '':
field_info[attr] = force_str(value, strings_only=True)
if getattr(field, 'child', None):
field_info['child'] = self.get_field_info(field.child)
elif getattr(field, 'fields', None):
field_info['children'] = self.get_serializer_info(field)
if (
not field_info.get('read_only') and
not field_info.get('relationship_resource') and
hasattr(field, 'choices')
):
field_info['choices'] = [
{
'value': choice_value,
'display_name': force_str(choice_name, strings_only=True)
}
for choice_value, choice_name in field.choices.items()
]
if hasattr(serializer, 'included_serializers') and 'relationship_resource' in field_info:
field_info['allows_include'] = field.field_name in serializer.included_serializers
return field_info