Имеется 2 таблички в модуле. Gallery и Photo. Таблица Gallery имеет ManyToManyField со ссылкой на Photo. Может содержать множество этих картинок.
Хочется в форме галереи чтобы показывались только те фотки, которые приаттачены к ней.
Вот пример из docs(admin.py):
class MyModelAdmin(admin.ModelAdmin):
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "cars":
kwargs["queryset"] = Car.objects.filter(owner=request.user)
return super(MyModelAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
Это сработает когда мы откроем галерею. Но этот код не даст добавить другие картинки в галерею:
Я попробовал так:
def formfield_for_manytomany(self, db_field, request, **kwargs):
if not request.REQUEST and db_field.name == "photo":
kwargs["queryset"] = PhotoColor.objects.filter(gallery=self.gallery_id)
return super(GalleryAdmin, self).formfield_for_manytomany(db_field, request, **kwargs)
Сработало, но уж очень смущает request.REQUEST. Есть какой-нибудь цивилизованный способ реализовать подобное?