Python 使用表单添加多个对象

Python 使用表单添加多个对象,python,django,python-3.x,django-forms,django-views,Python,Django,Python 3.x,Django Forms,Django Views,我正在尝试做一些我认为很常见的事情,但我真的不知道如何实现它 我有“要求”。每个需求都有自己的名称和唯一代码。我想用复选框显示带有要求\u选项列表的表单。用户可以选择所需的复选框。如何在Django制作 型号。py: class Requirement(models.Model): code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False) symbol =

我正在尝试做一些我认为很常见的事情,但我真的不知道如何实现它

我有“要求”。每个需求都有自己的名称唯一代码。我想用复选框显示带有
要求\u选项列表的表单。用户可以选择所需的复选框。如何在Django制作

型号。py:

class Requirement(models.Model):
     code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
     symbol = models.CharField(_('Symbol'), max_length=250)
     name = models.CharField(_('Name'), max_length=250)
class RequirementAddForm(forms.ModelForm):
    name = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=REQUIREMENTS_CHOICES,)

    class Meta:
        model = Requirement
        fields = ('symbol',)

 REQUIREMENTS_CHOICES = (
     ('A', 'Name A'),
     ('B', 'Name B'),
     ('C', 'Name C'),
 )
def requirement_add(request, project_code):
data = dict()
if request.method == 'POST':
    form = RequirementAddForm(request.POST)
    if form.is_valid():
        symbols = form.cleaned_data.get('symbol') # List of symbols which user selected ['A', 'C']
        for symbol in symbols:
            requirement = form.save(commit=False)
            requirement.symbol = symbol
            requirement.name = symbol.get_symbol_display() #???
            requirement.save()
        data['form_is_valid'] = True
        requirements = Requirement.objects.filter()
        context = {'requirement': requirement, 'requirements': requirements}
        data['html_requirement'] = render_to_string('project/requirement_list.html', context)
    else:
        data['form_is_valid'] = False
else:
    form = GroupRequirementAddForm()
context = {'form': form}
data['html_requirement_form'] = render_to_string('project/requirement_add.html', context, request=request)
return JsonResponse(data)
forms.py:

class Requirement(models.Model):
     code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
     symbol = models.CharField(_('Symbol'), max_length=250)
     name = models.CharField(_('Name'), max_length=250)
class RequirementAddForm(forms.ModelForm):
    name = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=REQUIREMENTS_CHOICES,)

    class Meta:
        model = Requirement
        fields = ('symbol',)

 REQUIREMENTS_CHOICES = (
     ('A', 'Name A'),
     ('B', 'Name B'),
     ('C', 'Name C'),
 )
def requirement_add(request, project_code):
data = dict()
if request.method == 'POST':
    form = RequirementAddForm(request.POST)
    if form.is_valid():
        symbols = form.cleaned_data.get('symbol') # List of symbols which user selected ['A', 'C']
        for symbol in symbols:
            requirement = form.save(commit=False)
            requirement.symbol = symbol
            requirement.name = symbol.get_symbol_display() #???
            requirement.save()
        data['form_is_valid'] = True
        requirements = Requirement.objects.filter()
        context = {'requirement': requirement, 'requirements': requirements}
        data['html_requirement'] = render_to_string('project/requirement_list.html', context)
    else:
        data['form_is_valid'] = False
else:
    form = GroupRequirementAddForm()
context = {'form': form}
data['html_requirement_form'] = render_to_string('project/requirement_add.html', context, request=request)
return JsonResponse(data)
视图。py:

class Requirement(models.Model):
     code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False)
     symbol = models.CharField(_('Symbol'), max_length=250)
     name = models.CharField(_('Name'), max_length=250)
class RequirementAddForm(forms.ModelForm):
    name = forms.MultipleChoiceField(required=False, widget=forms.CheckboxSelectMultiple, choices=REQUIREMENTS_CHOICES,)

    class Meta:
        model = Requirement
        fields = ('symbol',)

 REQUIREMENTS_CHOICES = (
     ('A', 'Name A'),
     ('B', 'Name B'),
     ('C', 'Name C'),
 )
def requirement_add(request, project_code):
data = dict()
if request.method == 'POST':
    form = RequirementAddForm(request.POST)
    if form.is_valid():
        symbols = form.cleaned_data.get('symbol') # List of symbols which user selected ['A', 'C']
        for symbol in symbols:
            requirement = form.save(commit=False)
            requirement.symbol = symbol
            requirement.name = symbol.get_symbol_display() #???
            requirement.save()
        data['form_is_valid'] = True
        requirements = Requirement.objects.filter()
        context = {'requirement': requirement, 'requirements': requirements}
        data['html_requirement'] = render_to_string('project/requirement_list.html', context)
    else:
        data['form_is_valid'] = False
else:
    form = GroupRequirementAddForm()
context = {'form': form}
data['html_requirement_form'] = render_to_string('project/requirement_add.html', context, request=request)
return JsonResponse(data)

你可以用djangoforms@SurbhitWagle你能再看看我的帖子吗。我补充了更多细节。我在表单中使用
multipleechoicefield
。在视图中,我使用
symbols=form.cleaned\u data.get('symbols')
,它提供了用户选择的符号列表。例如['A','C']。我需要将tuple(人类可读值)的第二个选项保存到name字段。怎么做?我尝试了这个方法,但不确定它是否正确:
requirement.name=symbol.get\u symbol\u display()
您可以使用这个@SurbhitWagle,我以前从这个链接中读取过信息。我在形式上使用choise,而不是在模型中。所以我不知道视图中的这一行是否正确
requirement.name=symbol.get\u symbol\u display()
我想将元组的第二个值存储到name字段。是否尝试使用
requirement.name=symbol.get\u name\u display()