将多个字段添加到django表单

时间:2017-10-21 14:05:25

标签: django django-models django-views

我是django的新手,我正在制作食谱食谱应用程序。我希望用户能够添加他们自己的食谱。

models.py

from django.db import models
from django.core.urlresolvers import reverse

class Recipe(models.Model):
    def __unicode__(self):
        return self.recipe_name

    recipe_name = models.CharField(max_length=250)
    category = models.CharField(max_length=50)
    description = models.CharField(max_length=1000)
    image = models.CharField(max_length=1000)
    prep_time = models.CharField(max_length=250)
    difficulty = models.CharField(max_length=50)
    instructions_url = models.CharField(max_length=1000)

    def get_absolute_url(self):
        return reverse('detail', kwargs={'pk': self.pk})

class Ingredients(models.Model):
    def __unicode__(self):
        return self.ingredients

    recipe = models.ForeignKey(Recipe, on_delete=models.CASCADE)
    ingredients = models.CharField(max_length=1000)

views.py

class RecipeCreate(CreateView):
    model = Recipe
    fields = ['recipe_name', 'category', 'image', 'prep_time', 'difficulty', 'instructions_url']

目前我的表单仅显示我的"类食谱"中的字段,但我想要的是有成分字段,可以选择添加其他字段。你有什么建议吗?谢谢!

1 个答案:

答案 0 :(得分:0)

使用通用CreateView来实现这一点很困难,而通用View只是为了创建一个模型实例。

你想要的是一个视图(你可以使用通用的Django ModelForm)和Recipe的形式(formset)以及Ingredients(参见{{ 3}})用于多个View表单。在post function Node(data) { this.next = null; this.data = data; } Node.prototype.appendToTail = function(data) { var end = new Node(data); var n = this; while (n.next != null) { n = n.next; } n.next = end; }; Node.prototype.toString = function() { var returnValue = String(this.data); if (this.next) { returnValue = returnValue + "-> " + String(this.next); } return returnValue; }; var ll = new Node(1); ll.appendToTail(3); ll.appendToTail(4); console.log(String(ll)) 方法中,您可以验证所有表单并保存数据。

在您的HTML中,您需要使用javascript动态创建其他字段并相应地更新表单集的数量(在表单集中Django formsets