Как использовать другое поле в качестве метки для modelformset? - PullRequest
0 голосов
/ 18 апреля 2019

Я создаю систему управления запасами, используя django в качестве основы.У меня есть простая модель со столбцом продукта и столбцом 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 Ответ

0 голосов
/ 18 апреля 2019

Ты имеешь в виду что-то вроде 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...