MCPcopy
hub / github.com/django/django / handle_fk_field

Method handle_fk_field

django/core/serializers/xml_serializer.py:111–135  ·  view source on GitHub ↗

Handle a ForeignKey (they need to be treated slightly differently from regular fields).

(self, obj, field)

Source from the content-addressed store, hash-verified

109 self.indent_level -= 1
110
111 def handle_fk_field(self, obj, field):
112 """
113 Handle a ForeignKey (they need to be treated slightly
114 differently from regular fields).
115 """
116 self._start_relational_field(field)
117 related_att = getattr(obj, field.attname)
118 if related_att is not None:
119 if self.use_natural_foreign_keys and (
120 natural_key_value := self._resolve_fk_natural_key(obj, field)
121 ):
122 # Iterable natural keys are rolled out as subelements
123 for key_value in natural_key_value:
124 self.xml.startElement("natural", {})
125 if key_value is None:
126 self.xml.addQuickElement("None")
127 else:
128 self.xml.characters(str(key_value))
129 self.xml.endElement("natural")
130 else:
131 self.xml.characters(str(related_att))
132 else:
133 self.xml.addQuickElement("None")
134 self.xml.endElement("field")
135 self.indent_level -= 1
136
137 def handle_m2m_field(self, obj, field):
138 """

Callers

nothing calls this directly

Calls 5

startElementMethod · 0.80
addQuickElementMethod · 0.80
charactersMethod · 0.80

Tested by

no test coverage detected