所以这是我在视野中的功能:
def create_recipe(request):
if request.method == 'POST':
form = RecipeForm(request.POST)
if form.is_valid():
current_user = request.user
data = form.cleaned_data
recipe_data=Recipe.objects.create(user=current_user, recipebase_id=data['recipebase_id'], title=data['title'], instructions=data['instructions'])
recipe_data.save()
return HttpResponseRedirect(reverse('create_recipe'))
else:
messages.error(request, "Error")
return render(request, 'create_recipe.html', {'form': RecipeForm })
这是我的表格:
class RecipeForm(forms.ModelForm):
class Meta:
model = Recipe
fields = ('recipebase_id', 'title
', 'instructions')
这是我的模特:
class Recipe(models.Model):
user = models.ForeignKey('auth.User')
recipebase_id = models.ManyToManyField(Recipebase)
title = models.CharField(max_length=500)
instructions = models.CharField(max_length=500)
def __str__(self):
return self.title
更新
<form action="/create_recipe/" method="post">
{% csrf_token %}
<div class="form-group">
<label for="{{ form.recipebase_id.label }}" class="form-control" >
<select id="id_{{ form.recipebase_id.name }}" name="{{ form.recipebase_id.name }}">
{% for value, title in form.recipebase_id.field.choices %}
<option value="{{ value }}">{{ title }}</option>
{% endfor %}
</select>
</div>
<div class="form-group">
<label for="{{ form.title.label }}">{{ form.title.label }}:</label>
<input type="{{ form.title.type }}" name="{{ form.title.name }}" max_length="500" class="form-control" id="{{ form.title.id }}">
</div>
<div class="form-group">
<label for="{{ form.instructions.label }}">{{ form.instructions.label }}:</label>
<input type="{{ form.instructions.type }}" name="{{ form.instructions.name }}" max_length="500" class="form-control" id="{{ form.instructions.id }}">
</div>
<input type="submit" value="submit">
</form>
当我提交表单时,它会抛出recipebase_id是一个无效的参数: &#39; recipebase_id&#39;是此函数的无效关键字参数
可以理解的是,它是一个很多领域,所以它不像普通的文本字段那么合适,但我真的不明白用哪种方式来表达它。有什么建议吗?
答案 0 :(得分:0)
在视图中,您不应该保存这样的对象。你刚才这样做
obj = form.save()
在表单上运行save方法创建并保存该表单中的对象。
答案 1 :(得分:0)
您可以在渲染时使用 django 应用程序“django-widget-tweaks”将类添加到模板中的 django 表单字段。 在 django 模板中使用它来添加类(例如引导类)
例如下面的代码添加 form-control 类来输入 html 标签
{% load widget_tweaks %}
{% for field in form.visible_fields %}
<div class="form-group">
<label for="{{ field.id_for_label }}">{{ field.label }}</label>
{% render_field field class="form-control" %}
</div>
{%endfor%}