美好的一天,
我正在尝试制作一个Django表单,在其中可以静态添加字段(下图描述了该概念)。
我想拥有一个带有“新建”按钮的表单。按钮“新”应该重定向到另一个页面,我可以在其中填充数据,例如从,到和数量。当我按提交后,它应该返回到表格,在表格中填写的数据应该可见(金额1,金额2等)。
有人可以带领我走上正确的道路吗?
P.S。我不能使用javascript
我正在使用的代码:
models.py
fun main() {
val someDummmyFilledListOfTestClass = listOf<TestClass>(
TestClass(1.toBigDecimal()),
TestClass(199.toBigDecimal()),
TestClass(null),
TestClass(501.toBigDecimal())
)
val result = helperfunc(someDummmyFilledListOfTestClass, TestClass::variable1::get)
// trailing lambda
// or val result = helperfunc(someDummmyFilledListOfTestClass) { it.variable1 }
println(result)
}
/* lambda last parameter for trailing lambda */
fun helperfunc(testList: List<TestClass>, function: (TestClass) -> BigDecimal?): BigDecimal {
return testList
// map TestClass to BigDecimal? and filter nulls
.mapNotNull(function)
// fold with initial value, reduce will throw exception if list is empty
.fold(BigDecimal.ZERO) { acc, element -> acc.add(element) }
}
data class TestClass(
var variable1: BigDecimal?
// var variable2: BigDecimal?
)
views.py
from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User
from django.urls import reverse
from django.forms import inlineformset_factory
class Post(models.Model):
title_choices = [
('Mr', 'Mister'),
('Ms.', 'Miss'),
]
title = models.CharField(max_length=100)
first_name = models.CharField(max_length=100, default = '')
last_name = models.CharField(max_length=100, default = '')
date_posted = models.DateTimeField(default=timezone.now)
titles = models.CharField(
max_length = 3,
choices = title_choices,
default= 'Mr',
)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
class Debt(models.Model):
Money = models.ForeignKey(Post, on_delete=models.CASCADE, null = True)
CurrentDebt = models.CharField(max_length=100, default = '')
Period = models.CharField(max_length=100, default = '')
答案 0 :(得分:1)
为简单起见,我将使用三个矩形,并从左到右从1到3对其编号。
由于您没有代码,因此我将尽力为您提供我认为可以帮助您的方法的大致蓝图。我假设矩形2和矩形3是用户填充数据的表单,提交矩形2会将数据添加到矩形1。
我看到的挑战是:
1.让矩形2记住一旦转到矩形3再回到矩形2,name
和last_name
提交了哪些原始数据。
2.将数据从矩形2发送回矩形3。
对于挑战1,我将使用a hidden input。您将有两个隐藏的输入,一个用于name
,一个用于last_name
。
对于挑战2,我将使用FormMixin。使用此mixin,您可以使用get_form_kwargs
之类的方法(请参阅上一链接)将数据从视图传递到表单。因此,一旦提交了矩形3,就应该将表单数据重定向到您对矩形2的GET
请求中。在此,您使用get_form_kwargs
并在其__init__
方法中用适当的数据填充表单