def _get_selectors(self, instance, content_type=None):
if content_type is None:
content_type = ContentType.objects.get_for_model(instance)
# Lazily pre-process per-content type selector definitions.
if len(self.content_type_to_selectors) == 0:
for k, v in settings.JSONATTRS_SCHEMA_SELECTORS.items():
a, m = k.split('.')
self.content_type_to_selectors[
ContentType.objects.get(app_label=a, model=m)
] = v
# Build full list of selectors from instance.
selectors = []
for s in self.content_type_to_selectors[content_type]:
selector = instance
s = s.replace('.pk', '_id')
for step in s.split('.'):
selector = getattr(selector, step, None)
selectors.append(str(selector))
return tuple(selectors)
评论列表
文章目录