Reduce number of queries for document metadata retrieval

This commit is contained in:
Roberto Rosario
2014-11-02 23:41:12 -04:00
parent 70468a3ef8
commit 5ca3684712
3 changed files with 8 additions and 2 deletions

View File

@@ -46,7 +46,13 @@ def post_post_document_type_change_metadata(sender, instance, **kwargs):
instance.metadata.create(metadata_type=metadata_type, value=None)
@property
def document_metadata(document):
return document.document_metadata.select_related('metadata_type')
DocumentType.add_to_class('metadata_type', DocumentTypeMetadataTypeManager.factory)
Document.add_to_class('metadata', document_metadata)
register_links(['metadata:metadata_add', 'metadata:metadata_edit', 'metadata:metadata_remove', 'metadata:metadata_view'], [metadata_add, metadata_edit, metadata_remove], menu_name='sidebar')
register_links(Document, [metadata_view], menu_name='form_header')

View File

@@ -105,7 +105,7 @@ def get_metadata_string(document):
"""
Return a formated representation of a document's metadata values
"""
return u', '.join([u'%s - %s' % (metadata.metadata_type, metadata.value) for metadata in DocumentMetadata.objects.filter(document=document).select_related('metadata_type')])
return u', '.join([u'%s - %s' % (document_metadata.metadata_type, document_metadata.value) for document_metadata in document.metadata.all()])
def convert_dict_to_dict_list(dictionary):

View File

@@ -45,7 +45,7 @@ class DocumentMetadata(models.Model):
Link a document to a specific instance of a metadata type with it's
current value
"""
document = models.ForeignKey(Document, verbose_name=_(u'Document'), related_name='metadata')
document = models.ForeignKey(Document, verbose_name=_(u'Document'), related_name='document_metadata')
metadata_type = models.ForeignKey(MetadataType, verbose_name=_(u'Type'))
value = models.CharField(max_length=255, blank=True, null=True, verbose_name=_(u'Value'), db_index=True)