在Django中从模板更新多个对象

时间:2014-01-14 16:09:50

标签: django

之前可能会被问过,但我找不到链接。

我是Django的新手(仅1天),所以你们可能想要为我提供新手的链接。

我想让人们对他们在不同地方吃过的菜肴投票。我有一系列的菜肴和餐馆。现在我希望用户将菜肴连接到餐厅并为菜肴评分。我正在从DB中一次挑选三个菜肴并将其显示给用户,并要求他进入每道菜的3家餐厅以及他的评级。我正在使用由我的设计师家伙编写的自定义HTML和CSS。 UI看起来像这样:

enter image description here

现在我在页面上只有一个保存按钮。用户可能只进入一个餐馆或全部三个餐馆,他也可能不会为任何菜肴输入任何东西。

我的观点定义为:

    from django.db import models

class Restaurant(models.Model):
    name = models.CharField(max_length=100)
    add_line1 = models.CharField('Address Line 1', max_length=150, null=True, blank=True)
    add_line2 = models.CharField('Address Line 2', max_length=150, null=True, blank=True)
    area = models.CharField(max_length=50)
    city = models.CharField(max_length=15)
    phone = models.CharField(max_length=15, null=True, blank=True)
    comments = models.CharField(max_length=140, null=True, blank=True)
    website = models.CharField(max_length=100, null=True, blank=True)

    def __unicode__(self):
        return self.name


class Dish(models.Model):
    name = models.CharField(max_length=100)
    cuisine = models.CharField(max_length=40, null=True, blank=True)

    def __unicode__(self):
        return self.name


class Menu(models.Model):
    name = models.CharField(max_length=100)
    rating = models.IntegerField()
    price = models.IntegerField(null=True, blank=True)
    restaurant = models.ForeignKey(Restaurant)
    dish = models.ForeignKey(Dish)

    def __unicode__(self):
        return self.name

我刚刚写了一个视图来展示菜肴

from DishoomIt.models import Dish
from django.shortcuts import render_to_response
from django.core.paginator import Paginator, EmptyPage, InvalidPage


def index(request):
    dishes_list = Dish.objects.all().order_by('name')
    paginator = Paginator(dishes_list, 3)
    try:
        page = int(request.GET.get('page', '1'))
    except:
        page = 1

    try:
        dishes = paginator.page(page)
    except(EmptyPage, InvalidPage):
        dishes = paginator.page(paginator.num_pages)


    return render_to_response('dishoom_templates/index.html', {'dishes':dishes, 'num_pages': [1, 2, 3, 4, 5]})

在模板方面,我使用for循环在一个页面上显示三个菜肴

现在我的问题是,当用户在这些字段中输入值并点击“保存”按钮时,如何一次更新所有对象?

我已经阅读过关于保存一个项目的内容,但我对如何传递多个对象并保存完全感到困惑。

感谢。

1 个答案:

答案 0 :(得分:0)

查看formsets的django文档。它们对此非常有用。