Reduce number of queries for document metadata retrieval
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user