#python #django
#python #django
Вопрос:
Я создаю систему управления запасами, используя django в качестве фреймворка. У меня есть простая модель со столбцом product и столбцом order_amount. Единственная часть, которую я хочу, чтобы пользователи могли обновлять с помощью modelformset, — это столбец order_amount . Django автоматически помечает каждую форму именем поля «Сумма заказа». Я бы хотел, чтобы он помечал каждую форму как экземпляр, который она обновляет из поля Product.
models.py
class Sysco_Products(models.Model):
Products = models.CharField(max_length = 200)
order_amount = models.IntegerField(blank=True, null=True)
def __str__(self):
return self.Products
class meta:
managed = True
db_table = 'sysco_products'
forms.py
from django import forms
from .models import Sysco_Products
class orderform(forms.ModelForm):
class Meta:
model = Sysco_Products
fields = ('order_amount',)
views.py
class SyscoOrder(TemplateView):
template_name= "SyscoOrder.html"
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)
Ответ №1:
Вы имеете в виду что-то вроде field.label = f"{sysco_product_instance.Products} amount:"
?
Это должно сработать:
from django.utils.translation import gettext
class orderform(forms.ModelForm):
class Meta:
model = Sysco_Products
fields = ('order_amount',)
def __init__(self, *args, **kwargs):
super(self, orderform).__init__(*args, **kwargs)
if self.instance.Products.strip():
self.fields['order_amount'].label = gettext("%(product_name)s amount:").format(product_name=self.instance.Products)