2017-09-05 44 views
0

如何從單個表單創建多個記錄?在Django中從單個表單提交創建數據庫中的多個記錄

在我的應用程序中,管理員管理多條路線。

models.py

class Route(models.Model): 
    milage = models.PositiveSmallIntegerField(... 
    fuel = models.PositiveSmallIntegerField(... 
    start_time = models.DateTimeField(... 
    route_time = models.DateTimeField(... 
    date = models.DateTimeField(... 

class Driver(models.Model): 
    driver = models.CharField(max_length... 
    usual_route = models.ForeignKey(Route) 

class Daily(models.Model): 
    date = models.DateTimeField(... 
    route = models.ForeignKey(Route) 
    driver = models.ForeignKey(Driver) 
    stage = models.PositiveSmallIntegerField(... 

假設一個管理員管理10路。我想要的是管理員通過提交帶日期的表單創建每日時間表來開始每一天。提交時,我想在數據庫中創建10條記錄,每條記錄一條。所有10條記錄將與表格上提交的日期相同,但每條記錄都有不同的驅動程序和路線。

我知道如何靜態信息添加到一個紀錄,但我不知道如何:

  1. 從單篇文章
  2. 動態改變字段創建10條記錄(即司機,路線)爲每個記錄。

當前視圖看起來像這樣。所有記錄的階段= 1:

class DailySchedule(CreateView): 
    model = Daily 
    form class = ... 

    def form_valid(self, form): 
     instance = form.save(commit = False) 
     instance.stage = 1 

任何想法?謝謝。

+1

表單代碼在這裏更重要。首先,看看[模型框架](https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#model-formsets) – Melvyn

回答

0

如何使用for-loop呢?像這樣:

for i in range(10): 
    route, _ = Route.objects.get_or_create(...) 
    driver, _ = Driver.objects.get_or_create(..., usual_route=route) 
    daily = Daily.objects.create(..., route=route, driver=driver) 
相關問題