如何在表单中过滤Choice FK?

时间:2018-09-02 18:51:09

标签: django django-models django-forms django-views

我想根据user_logged过滤表单中的选择。这是我的模特。

#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()

首先,我创建了一个商店,然后将StoreManager关联到商店,然后我想要在表单中添加ImageLogo,因此在该表单的字段“商店”中,我只希望列出与用户关联的商店。

Store = (SuperMarket Store), (ClothesStore)
StoreManager = John(SuperMarket Store), Julian(ClothesStore)
StoreLogo = John (can only view SuperMarket Sotre)
StoreLogo = Julian(can only view ClothesStore)  

我正在使用CBV(generic.CreateView)。 有我的看法。

#views.py
class AddPhotoOnEstablishment(LoginRequiredMixin, generic.CreateView):
    model = StoreLogo
    fields = ['store', 'image']
    success_url = reverse_lazy('register:establishment_list')
    context_object_name = 'object_name'

我想,如果John已关联到Store并登录系统,则当他添加Image徽标时,Store字段仅显示他关联的Store。

1 个答案:

答案 0 :(得分:0)

也许this link会有所帮助。它解释了CreateView类的方法和属性。在render_to_response方法中,您可以使用以下代码获取当前用户:

self.request.user

并检查其是否与您作为响应发送的商店徽标相关联。