我正在写一个 django 食谱网站,并且对 JSON 字段和表单有疑问
我正在尝试为该站点编写创建配方功能,并想做两件事:
我想在鼠标单击时添加文本字段,类似于添加电子邮件附件。我想使用 JSONField 这样做(除非 picklefield 更好)
我希望用户能够在一个文本字段中编辑食谱。我希望我可以将所有步骤打包到一个文本字段中,并允许他们编辑该字段,然后将它们解压缩到步骤中。否则用户可能会因为必须编辑每个单独的步骤而感到困惑。
这是我来自 django 项目的模型:
class Cookbook(models.Model):
def __unicode__(self):
return self.name
name = models.CharField(max_length=50)
pub_date = models.DateTimeField('date published')
user = models.ForeignKey(User, related_name='cookbooks')
recipes = models.ManyToManyField('Recipe', related_name = 'cookbooks')
class Recipe(models.Model):
def __unicode__(self):
return self.name
original_cookbook = models.ForeignKey(Cookbook)
name = models.CharField(max_length=200)
author = models.CharField(max_length= 100)
picture = models.ImageField(upload_to = 'Downloads', blank=True)
pub_date = models.DateTimeField('date published', auto_now_add=True, blank=True)
ingredients = JSONField()
steps = JSONField()
prep_time = models.IntegerField()
这是我创建新配方的视图。现在我不确定如何在我的视图中使用 JSONField。
我找到了这个链接,但它说“最后,我还不确定如何与表单交互,所以这个领域有点模糊。” 看到我用的是表格,这个问题解决了吗?
def createrecipe(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/index/')
else:
if request.method == 'POST':
form = RecipeForm(request.POST)
if form.is_valid():
recipe = form.save(commit=False)
recipe.original_cookbook = request.user.cookbooks.all()[0]
recipe.pub_date = datetime.datetime.now()
recipe.save()
user = request.user
cookbooks = user.cookbooks
cookbook = cookbooks.all()[0]
cookbook.recipes.add(recipe)
return HttpResponseRedirect('/account')
else:
form = RecipeForm()
return render_to_response('cookbook/createrecipe.html',
{'form':form},
context_instance=RequestContext(request))
这是 createrecpe.html 块内容:
{% block content %}
<form action="." method="POST">
<table>
{% csrf_token %}
{{ form.as_table }}
</table>
<p><input type="submit" value="Submit"></p>
</form>
{% endblock %}
我很难弥合 JSONField 模型和视图之间的差距,以便在 JSON 字段中显示/输入文本。我也很困惑如何在模板中显示 jsonfield。
谢谢你的帮助,这真的让我很沮丧,
零食鱼