首页 > 解决方案 > 如何在 Django 中显示 ModelChoiceField 的选定值

问题描述

我需要在视图页面上仅显示从 forms.ModelChoiceField 中选择的值。我该怎么做?

我查看了许多不同的论坛,无法明确回答我应该做什么。我是 Python 的新手。

形式:

class Manufacturer1Form(ReadOnlyFormMixin, ModelForm):
    manufacturer = forms.ModelChoiceField(queryset=Vendor.objects.filter(vendor_type='manufacturer').order_by('name'))

    class Meta:
        model = Manufacturer1Relationship
        exclude = ('part',)

模型:

class Manufacturer1Relationship(models.Model):
    part = models.ForeignKey(Part, on_delete=models.CASCADE)
    manufacturer = models.ForeignKey(Vendor, on_delete=models.CASCADE,
                                     limit_choices_to={'vendor_type': 'manufacturer'},)
    partNumber = models.CharField(max_length=40, blank=True)


    class Meta:
        permissions = (
        ('modify_admin_site', 'Can modify, add, view, or delete manufacturer relationships'),
        )

看法:


def PartView(request, type_id, id):
    partType = Type.objects.get(id=type_id)
    instance = get_object_or_404(Part, id=id)
    selection = None
    if request.method == 'POST':
        form = ViewPartForm(type_id, request.POST, request.FILES, instance=instance)
        manu1_formset = ManufacturerFormSet(request.POST, instance=instance)
        location1_formset = LocationFormSet(request.POST, instance=instance)
        if form.is_valid():
            selection = form.cleaned_data['active_feed']
            part = form.save(commit=False)
            part.partType_id = type_id
            if manu1_formset.is_valid() and location1_formset.is_valid():
                part.save()
                manu1_formset.save()
                location1_formset.save()
                url = reverse('list_parts', args=[partType.pk])
                return HttpResponseRedirect(url)
    else:
        form = ViewPartForm(type_id=type_id, instance=instance)
        manu1_formset = ManufacturerFormSet(instance=instance)
        location1_formset = LocationFormSet(instance=instance)
    return render(request, 'part_view.html', {'view_part_form': form,
                                              'location_formset': location1_formset,
                                              'manu_formset': manu1_formset,
                                              'selection': selection,
                                              'partType': partType,
                                              'part': instance})

标签: pythonhtmldjango

解决方案


class Manufacturer1Form(ReadOnlyFormMixin, ModelForm):
    manufacturer = forms.ModelChoiceField(queryset=Vendor.objects.filter(vendor_type='manufacturer').order_by('name'))

    class Meta:
        model = Manufacturer1Relationship
        exclude = ('part',)


    def __init__(self, *args, **kwargs):
        initial_manufacturer = kwargs.pop("manufacturer",None)
        super().__init__(*args, **kwargs)
        self.fields["manufacturer"].initial = initial_manufacturer




ManufacturerFormSet(request.POST, instance=instance, manufacturer=specific_manufacturer)

推荐阅读