MCPcopy
hub / github.com/django/django / handle_field

Method handle_field

django/core/serializers/xml_serializer.py:76–109  ·  view source on GitHub ↗

Handle each field on an object (except for ForeignKeys and ManyToManyFields).

(self, obj, field)

Source from the content-addressed store, hash-verified

74 self.indent_level -= 1
75
76 def handle_field(self, obj, field):
77 """
78 Handle each field on an object (except for ForeignKeys and
79 ManyToManyFields).
80 """
81 self.indent_level += 1
82 self.indent(self.indent_level)
83 self.xml.startElement(
84 "field",
85 {
86 "name": field.name,
87 "type": field.get_internal_type(),
88 },
89 )
90
91 # Get a "string version" of the object's data.
92 if getattr(obj, field.name) is not None:
93 value = field.value_to_string(obj)
94 if field.get_internal_type() == "JSONField":
95 # Dump value since JSONField.value_to_string() doesn't output
96 # strings.
97 value = json.dumps(value, cls=field.encoder)
98 try:
99 self.xml.characters(value)
100 except UnserializableContentError:
101 raise ValueError(
102 "%s.%s (pk:%s) contains unserializable characters"
103 % (obj.__class__.__name__, field.name, obj.pk)
104 )
105 else:
106 self.xml.addQuickElement("None")
107
108 self.xml.endElement("field")
109 self.indent_level -= 1
110
111 def handle_fk_field(self, obj, field):
112 """

Callers

nothing calls this directly

Calls 7

indentMethod · 0.95
startElementMethod · 0.80
charactersMethod · 0.80
addQuickElementMethod · 0.80
get_internal_typeMethod · 0.45
value_to_stringMethod · 0.45
dumpsMethod · 0.45

Tested by

no test coverage detected