我想在Django中創(chuàng)建一個更新表單,我想這并不復雜,但是我需要知道哪種方式是實現(xiàn)它的標準方式。我試著簡化它。讓我們想象一下:
models.py:
class Building(models.Model):
"""ORM representation of the Projects"""
name = models.CharField(max_length=64, blank=False, null=False)
project = models.JSONField(default=building_default_value, blank=False, null=False)
項目的簡化示例:
{
"floor": {
"Stahlbeton": 200,
"Estrich": 50,
"Sauberkeitsschicht": 50,
"Abdichtung": 10,
"Dampfsperre": 2,
"Schaumglas": 120,
"Extrudiertes Polystyrol (XPS)": 120,
},
"roofbase": {
"Stahlbeton": 200,
"Abdichtung": 10,
"Dampfsperre": 4,
"Kies": 50,
"Extrudiertes Polystyrol (XPS)": 180,
},
"wall": {
"WDVS Verklebung und Beschichtung": 15,
"Steinwolle-Daemmstoff": 140,
"KS-Mauerwerk": 175,
"Gipsputz": 15,
},
}
現(xiàn)在,我想在我的HTML頁面中有一個更新的表單,用戶可以編輯這個材料的每個數(shù)字。例如,它應該是這樣的:
Floor:
Stahlbeton = (place to modify number)
Estrich = (place to modify number)
對于所有其他鍵也是如此。
我嘗試使用{% bootstrap_form form %},但問題是,使用這個命令,名稱和項目只有兩個表單,我無法將它分解為項目字典中的每個值有多個表單。
以下也是我的看法. py:
class BuildingUpdate(generic.UpdateView):
"""Update existing buildings"""
model = models.Building
fields = {"name", "project"}
template_name = "building_update.html"
success_url = reverse_lazy("building:buildings")
def form_valid(self, form):
building = form.save(commit=False)
building.save()
return super().form_valid(form)
我將感謝任何提示,想法或鏈接,以幫助解決這一挑戰(zhàn)。