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