Python modelcluster.fields.ParentalManyToManyField() Examples
The following are 2
code examples of modelcluster.fields.ParentalManyToManyField().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
modelcluster.fields
, or try the search function
.
Example #1
Source File: models.py From django-modelcluster with BSD 3-Clause "New" or "Revised" License | 5 votes |
def get_all_child_m2m_relations(model): """ Return a list of ParentalManyToManyFields on the given model, including ones attached to ancestors of the model """ return [ field for field in model._meta.get_fields() if isinstance(field, ParentalManyToManyField) ]
Example #2
Source File: index.py From wagtail with BSD 3-Clause "New" or "Revised" License | 5 votes |
def select_on_queryset(self, queryset): """ This method runs either prefetch_related or select_related on the queryset to improve indexing speed of the relation. It decides which method to call based on the number of related objects: - single (eg ForeignKey, OneToOne), it runs select_related - multiple (eg ManyToMany, reverse ForeignKey) it runs prefetch_related """ try: field = self.get_field(queryset.model) except FieldDoesNotExist: return queryset if isinstance(field, RelatedField) and not isinstance(field, ParentalManyToManyField): if field.many_to_one or field.one_to_one: queryset = queryset.select_related(self.field_name) elif field.one_to_many or field.many_to_many: queryset = queryset.prefetch_related(self.field_name) elif isinstance(field, ForeignObjectRel): # Reverse relation if isinstance(field, OneToOneRel): # select_related for reverse OneToOneField queryset = queryset.select_related(self.field_name) else: # prefetch_related for anything else (reverse ForeignKey/ManyToManyField) queryset = queryset.prefetch_related(self.field_name) return queryset