Handle a ForeignKey (they need to be treated slightly differently from regular fields).
(self, obj, field)
| 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 | """ |
nothing calls this directly
no test coverage detected