class MetaData(models.Model): metadata_id = models.AutoField(primary_key = True) name = models.CharField('metadata name', max_length=200, unique=True) description = models.TextField('description')
def __str__(self): return "%s" % (self.name)
class MetaDataValue(models.Model): metadata_id = models.ForeignKey(MetaData, on_delete=models.CASCADE,) value = models.CharField('value', max_length=200, unique=True) def __str__(self): return self.value class DocumentMetaDataValue(models.Model): document = models.ForeignKey(Document, on_delete=models.CASCADE) metadata = models.ForeignKey(MetaData, on_delete=models.CASCADE) metadataValue = models.ForeignKey(MetaDataValue, on_delete=models.CASCADE) def __str__(self): return '{}: {} {}'.format(self.document, self.metadata, self.metadataValue)
My view in views.py
class MetaDataValueAutocomplete(autocomplete.Select2QuerySetView): def get_queryset(self): print ("I am MetaDataValueAutocomplete.get_query!!") # Don't forget to filter out results depending on the visitor ! if not self.request.user.is_authenticated(): return MetaDataValue.objects.none()
qs1 = MetaData.objects.all() qs = MetaDataValue.objects.all()
if self.q: qs = qs.filter(metadata_id = qs1.filter(name=self.q)).order_by("value")
return qs
My urls.py (project level, not app level)
urlpatterns = [ url(r'^admin/', admin.site.urls), url(r'^metadatavalue-autocomplete/$', MetaDataValueAutocomplete.as_view(), name='metadatavalue-autocomplete', ), url(r'^memorabilia/', include('memorabilia.urls', namespace = 'memorabilia')), url(r'^accounts/', include('django.contrib.auth.urls')), url(r'^$', generic.RedirectView.as_view(url='/workflow/', permanent=False)), url(r'', include(frontend_urls)),]
if settings.DEBUG: import debug_toolbar urlpatterns = [ url(r'^__debug__/', include(debug_toolbar.urls)), ] + urlpatterns
#urlpatterns += staticfiles_urlpatterns() urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
Output from browser window testing the metadatavalue-autocomplete url:
http://localhost:8099/metadatavalue-autocomplete/?q=Meal
{"pagination": {"more": false}, "results": [{"text": "Breakfast", "id": "137"}, {"text": "Dinner", "id": "138"}, {"text": "High Tea", "id": "139"}, {"text": "Lunch", "id": "140"}, {"text": "Snack", "id": "141"}]}
Output from reverse url
>>> reverse('metadatavalue-autocomplete')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/django/urls/base.py", line 91, in reverse
return force_text(iri_to_uri(resolver._reverse_with_prefix(view, prefix, *args, **kwargs)))
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/django/urls/resolvers.py", line 438, in _reverse_with_prefix
possibilities = self.reverse_dict.getlist(lookup_view)
File "/home/mark/.virtualenvs/memorabilia/lib/python3.4/site-packages/django/urls/resolvers.py", line 335, in reverse_dict
return self._reverse_dict[language_code]
KeyError: None
>>>
My admin.py:
class DocumentMetaDataValueForm(forms.ModelForm):
metadataValue = forms.ModelChoiceField(
queryset = MetaDataValue.objects.all(),
widget = autocomplete.ModelSelect2(url='metadatavalue-autocomplete')
)
class Meta:
model = DocumentMetaDataValue
fields = '__all__'
class DocumentMetaDataValueAdmin(admin.ModelAdmin):
form = DocumentMetaDataValueForm
admin.site.register(DocumentMetaDataValue,DocumentMetaDataValueAdmin)
Any ideas on what I am missing - I am stumped and seem to have exhausted the info in the test projects for django-autoselect-light.
Thanks!
Mark
--
You received this message because you are subscribed to the Google Groups "yourlabs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to yourlabs+unsubscribe@googlegroups.com.
To post to this group, send email to your...@googlegroups.com.
Visit this group at https://groups.google.com/group/yourlabs.
To view this discussion on the web visit https://groups.google.com/d/msgid/yourlabs/CAC6Op1_ncj%2B19%2B7yZ4fruuc8qZy4J%2BOdQrNr_kQ__Em86z6t%2Bg%40mail.gmail.com.
--
You received this message because you are subscribed to the Google Groups "yourlabs" group.
To unsubscribe from this group and stop receiving emails from it, send an email to yourlabs+unsubscribe@googlegroups.com.
To post to this group, send email to your...@googlegroups.com.
Visit this group at https://groups.google.com/group/yourlabs.
To view this discussion on the web visit https://groups.google.com/d/msgid/yourlabs/CAC6Op1-vS7zXs11izrpUJ-kHxWVb9hNyy%3DX5%2B2Ne6OOgEe3iZQ%40mail.gmail.com.