我有一个内联formset,我需要将一个ForeignKey字段的值按顺序和单一地分配给内联formset的每一行。使用modelchoicefield的select默认小部件一切正常,但我不希望用户选择任何选项,但要提供foreignfield中可用选项的列表。 我的inlineformset如下:
class ResultadoForm(forms.ModelForm):
frequencia = forms.CharField(max_length=50)
tolerancia = forms.CharField(max_length=255)
def __init__(self, *args, **kwargs):
equipamento_id = kwargs.pop('equipamento_id', None)
super (ResultadoForm, self).__init__(*args, **kwargs)
self.fields['teste'].queryset = Teste.objects.filter(equipamento=equipamento_id).order_by('grupoteste', 'numeracao')
class Meta:
model = Resultado
exclude = ['actividade']
我的观点呈现表格:
@login_required()
def QAView(request, equipamento_id):
form = ActividadeForm()
form1 = ResultadoForm(equipamento_id)
equipamento = Equipamento.objects.get(id=equipamento_id)
testes_list = Teste.objects.filter(equipamento=equipamento_id)
FormSet = inlineformset_factory(Actividade, Resultado, form=ResultadoForm, fields='__all__', extra=len(testes_list))
formset = FormSet(form_kwargs={'equipamento_id': equipamento_id})
context = {'equipamento_id': equipamento_id, 'data':datetime.now(), 'equipamento': equipamento, 'form': form, 'testes_list': testes_list, 'formset': formset}
template = 'SFM/Equipamento/QA.html'
return render(request, template, context)
在我的模板中:
{% for r in formset %}
{{ r.id }}
{% for t in r.teste.field.queryset %}
<tr>
<td>{{ t}}</td>
<td>{{ t.frequencia }}</td>
<td>{{ t.tolerancia }}</td>
<td>{{ r.conforme }}</td>
</tr>
{% endfor %}
{% endfor %}
我的Resultado模型:
class Resultado(models.Model):
CONFORME_CHOICES = (
("Sim", "Sim"),
("Não", "Não"),
)
teste = models.ForeignKey(Teste, null=True, blank=True, on_delete=models.CASCADE)
conforme = models.CharField(max_length=30, choices=CONFORME_CHOICES)
actividade = models.ForeignKey(Actividade, null=True, blank=True, on_delete=models.CASCADE)
def __str__(self):
return str(self.id)
使用此模板,我得到4行。我应该只得到两个。但我有两个外键选项,所以我重复了两个外国选项。 是否可以为此inlineformset的每一行分配一个且只有一个外键?例如,第一行自动分配第一个外部值,第二行自动分配第二个外部值。请帮忙。