Как использовать get_form () для фильтрации FK? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть три модели и ListView с фильтром для каждой. Вот мои модели.

#models.py
class Store(models.Model):
    name = models.CharField(max_length=64, unique=True)
    description = models.TextField(null=True, blank=True)

class StoreManager(models.Model):
    store = models.ForeignKey(Store, related_name='store', on_delete=models.CASCADE)
    user = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)

class StoreLogo(models.Model):
    store = models.ForeignKey(Store, related_name='store', on_delete=models.CASCADE, verbose_name='Store')
    image = photo = models.FileField()

Я хочу создать форму, содержащую в поле ForeignKey фильтр конкретного объекта. На мой взгляд из Detail Store, я вижу детали из Store.Object01, и в представлении есть ссылка для вида StoreLogo, я хочу, чтобы в этой форме поле Store приписывало Object01, так как я пришел из деталь этого объекта.

Я пытаюсь использовать get_form в Django CBV (CreateView), но мой набор запросов не работает. Вот мой взгляд.

class CreateLogo(LoginRequiredMixin, generic.CreateView):
    model = StoreManager
    template_name = 'generic_form.html'
    fields = ['store', 'user']
    success_url = reverse_lazy('register:store_logo_list')
    context_object_name = 'object_name'

    def get_form(self):
        form = super(CreateLogo, self).get_form()

        form.fields['store'].queryset = StoreLogo.objects.filter(store__id=self.request.id)
        return form

Кто-нибудь может мне помочь? Если у вас есть решение для TemplateView, я тоже могу его использовать. Большое спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...