django レシピ Web サイトを作成しており、JSON フィールドとフォームについて質問があります
サイトのレシピ作成関数を作成しようとしていますが、次の 2 つのことを行いたいと考えています。
電子メールに添付ファイルを追加するのと同様に、マウス クリックでテキスト フィールドを追加したいと考えています。そのために JSONField を使用したい (picklefield の方が優れている場合を除く)
ユーザーが 1 つのテキスト フィールドでレシピを編集できるようにしたい。すべてのステップを 1 つのテキスト フィールドにまとめて、そのフィールドを編集し、ステップにアンパックできるようにしたいと考えていました。そうしないと、個々のステップを編集する必要があり、ユーザーが混乱する可能性があります。
これが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を表示する方法も混乱しています。
これは本当に私を落胆させてきました。
スナックフィッシュ