Удаление поля формы на основе текущего пользователя? - PullRequest
0 голосов
/ 27 апреля 2019

У меня есть набор моделей, используемый для отслеживания запасов для данного поставщика. Я хотел бы использовать текущего пользователя, чтобы отфильтровать, какие поля в наборе модели отображаются. По сути, я хотел бы создать поле «Сумма заказа», специфичное для пользователя, вошедшего в систему.

model.py

class Sysco_Products(models.Model):
    Products = models.CharField(max_length = 200)
    order_amount = models.IntegerField(blank=True, null=True,)
    order_amount2 = models.IntegerField(blank=True, null=True,)
    order_amount3 = models.IntegerField(blank=True, null=True,)

    def __str__(self):
        return self.Products

    class meta:
        managed = True
        db_table = 'sysco_products'

forms.py

Это не работает, но, надеюсь, поможет вам понять, что я пытаюсь сделать

class sysco1(forms.ModelForm):

    def __init__(self, *args, **kwargs):
        self.user = kwargs.pop('user')

        super(sysco1, self).__init__(*args, **kwargs)

        if not self.user.filter(name_iexact='mshaf').exist():
            del self.fields['order_amount']

    class Meta:
        model = Sysco_Products
        fields = ('order_amount',)

views.py

class SyscoOrder(TemplateView):
        template_name= "SyscoOrder.html"

        def get_form_kwargs(self):
                kwargs = super(SyscoOrder, self).get_form_kwargs()
                kwargs.update({ 'user' : self.request.user })
                return kwargs

        def get(self, request):
                OrderFormSet = modelformset_factory(Sysco_Products, fields=('order_amount', ))
                context = {

                        'OrderFormSet' : OrderFormSet,
                }
                return render(request, self.template_name, context)

        def post(self, request):
                OrderFormSet = modelformset_factory(Sysco_Products, fields=('order_amount',))
                formset = OrderFormSet(request.POST,)
                if formset.is_valid():
                        formset.save()
                        return redirect('Order')

                context ={

                        'formset' : formset,
                }
                return render(request, self.template_name, context)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...