如何使用get_form()过滤FK?

时间:2018-09-04 03:21:05

标签: django django-forms django-views django-queryset django-class-based-views

我有三个模型,每个都有过滤器的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,因为我来自这个对象的细节。

我正在尝试在Django CBV(CreateView)中使用get_form,但是我的查询集不起作用。这是我的看法。

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的解决方案,也可以使用。非常感谢。

0 个答案:

没有答案