在我的Django应用程序中,我从服务器接收多行数据。接收后,我要求用户为每个数据行命名,并决定是否在将来同步该行。之后,我将这些信息与行一起保存在数据库中。
这意味着我有模型
class Row(models.Model):
name = models.CharField(max_length = 191)
synced = models.BooleanField(default = True)
col_1 = models.CharField(max_length = 191)
...
col_n = models.CharField(max_length = 191)
和表格
class RowForm(forms.ModelForm):
class Meta:
model = Row
fields = ['name','synced']
在我的模板中,我想将“名称”和“已同步”显示为表单字段,并将“ col_1”,...,“ col_n”显示为不可编辑的数据。
我认为:
我从服务器接收了数据,并从服务器创建了Row模型实例。 这是开始变得丑陋的地方。我尝试定义一个ModelFormset。但是,请稍等:我没有QuerySet可以提供给它,因为数据还不在数据库中,尽管它在模型实例中。
好的。也许我应该使用常规的Formset。但是,等等:我不想将任何初始数据提供给Formset。表单字段应为空/默认值。由于我无法在表单集中“保留”“ col_1”,...,“ col_n”数据,而又无法对其进行编辑,因此我必须将其作为上下文中的单独对象传递。我必须render()
使用模板
context={'row_formset': row_formset, 'row_data': row_data}
,我必须在会话中保留“ col_1”,...,“ col_n”,因为它不会包含在POST数据中。那是一个痛苦的屁股,但是好吧...
但是,请稍候:如果我要遍历模板中的表单集行,如何模拟地遍历数据行以在同一行中显示它们呢?我不能在上下文中将它们压缩在一起,因为一个是表单集,我需要管理表单。
地狱,这很丑。
完成此任务的“正确”,最“偏执”方法是什么?