Ein Produkt hat viele Elemente. Ich kann Artikel eines bestimmten Produkts in einer Tabelle anzeigen. Aber wenn ich versuche zu speichern, wird beim Postback nur das letzte Element in der Tabelle für alle Artikel dieses Produkts gespeichert. Dies könnte daran liegen, dass ich nur das letzte Element von meinem HTML zurückgebe. Kann mir irgendjemand irgendeinen eleganten Weg sagen, dies zu tun? Hier ist mein Code.Kann nicht eine Liste von Artikeln aus Django Vorlage speichern
models.py
class Item(models.Model):
Product = models.ForeignKey("Product", related_name = "Attributes")
Name = models.CharField(max_length=1000, blank=True, null=True)
Type = models.CharField(max_length=1000, blank=True, null=True)
forms.py
class ItemForm(ModelForm):
class Meta:
model = Item
fields = ['Name', 'Tag']
views.py
def getItems(request, product_id):
items = get_list_or_404(Item, Product = product_id)
itemslist = []
if request.method == 'GET':
for item in items:
itemform = ItemForm(instance=item)
itemlist.append(itemform)
else:
for item in items:
itemform = ItemForm(request.POST, instance=item)
itemlist.append(itemform)
for tempform in itemlist:
if tempform.is_valid():
tempform.save()
return render(request, 'knowledgebase.html', {'product_id': product_id, 'itemslist': itemslist})
html-Datei:
<tbody>
{% for itemform in itemslist%}
<tr>
<td class="td"> {{ itemform.Name }} </td>
<td> {{ itemform.Tag }} </td>
</tr>
{% endfor %}
</tbody>
Sie sollten ein Formset für diese Art von Sache verwenden. –
Um zu Mr. Rosemans Kommentar hinzuzufügen, siehe https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#model-formsets, um zu erfahren, wie Sie ein Model Formset einrichten können. Der Ansichtscode wäre ziemlich derselbe. – theWanderer4865