我是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']
目前我的表单仅显示我的"类食谱"中的字段,但我想要的是有成分字段,可以选择添加其他字段。你有什么建议吗?谢谢!
答案 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)