Как отфильтровать Choice FK в формах? - PullRequest
0 голосов
/ 02 сентября 2018

Я хочу отфильтровать выбор в форме согласно 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()

Сначала я создал Store, после чего я связываю StoreManager с Store, а затем я хочу в формах добавить ImageLogo, поэтому в этих формах в поле Store я хочу перечислить только Store, с которым связан пользователь.

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'

Я хочу, если Джон связался с Store и вошел в систему, когда он добавляет логотип Image, в поле Store отображается только магазин, с которым он связан.

1 Ответ

0 голосов
/ 02 сентября 2018

возможно эта ссылка поможет. он объяснил методы и атрибуты класса CreateView. в методе render_to_response вы можете получить текущего пользователя, используя этот код:

self.request.user

и проверьте, связан ли он с логотипом магазина, который вы отправляете в качестве ответа.

...