我试图以表格形式显示数据网格(产品规格表),但无法弄清楚如何将一列的值用作另一列的标签。例如:特征名称(作为标签)..特征值(作为输入)。
到目前为止,我的代码是这样的:
models.py
class ProductSpecs(models.Model):
sku = models.CharField(max_length=30,blank=False)
f_feature = models.CharField(max_length=100,blank=False)
f_value = models.TextField(blank=True)
f_unit = models.CharField(max_length=20,blank=True)
ic_feature_name = models.CharField(max_length=50,blank=True)
ic_feature_id = models.SmallIntegerField(blank=True)
ic_feature_type = models.CharField(max_length=30,blank=True)
ic_value = models.CharField(max_length=100,blank=True)
last_update = models.DateTimeField(default=timezone.now,blank=True)
status = models.CharField(max_length=20,blank=True)
def __repr__(self):
return str(self.sku)
views.py
def product_specs(request,pk):
obj = BrandMainData.objects.get(pk=pk)
prod_specs = ProductSpecs.objects.filter(sku=obj.sku).all()
if prod_specs:
spec_formset = modelformset_factory(ProductSpecs,fields=('ic_feature_name','ic_value',),widgets={'ic_feature_name': TextInput(attrs={'readonly': True,'disabled': True,'border':'none'})})
if request.method == 'POST':
formset = spec_formset(request.POST)
formset.save()
return HttpResponseRedirect('')
else:
formset = spec_formset(queryset=prod_specs)
context = {
'formset': formset,'main_prod': obj,}
return render(request,'imports/product_specs.html',context=context)
else:
return render(request,'imports/404.html')
HTML模板
<form action="" method="POST" name="">
{% csrf_token %}
{{ formset.management_form }}
{% for form in formset %}
{% for field in form %}
{% if field.value %}
{% if field.label == 'Ic feature name' %}
<div style="float:left; width:450px; padding-left:40px; margin-bottom:0px"> {{ field }}</div>
{% else %}
<div>{{ field }}</div>
{% endif %}
{% endif %}
{% endfor %}
{% endfor %}
<div class="form-group">
<button class="btn btn-info" type="submit">Update</button>
</div>
</form>
我很难理解为2个字段。格式化它们并摆脱“标签”(第一)字段的边框也很困难。
如果我将其更改为'{{field.value}}',那么值将被奇怪地保存-第一个字段的值将被删除,第二个字段的值将被保存。