0

レシピを処理するモデルがあり、ユーザーがフォームを介して独自のレシピを入力できるようにしたいとしましょう。次に、そのレシピ エントリを入力したユーザーのユーザー ID に関連付けます。私の推測では、私のモデルは次のようになります。

class Recipe(models.Model):
    name = models.CharField(max_length=100)
    body = models.TextField()
    creator = models.ManyToManyField(User)

    def __unicode__(self):
        return self.creator

あれは正しいですか?モデル フォームを作成すると、次のようになります。

class RecipeForm(ModelForm):
    class Meta:
        model = Recipe

しかし、送信時にユーザー情報を Recipe モデルに自動的に渡すにはどうすればよいでしょうか? これは私の見解では起こりますか?

私の現在の見解は次のようなものです:

def recipe(request):
    if request.method == 'POST':
        form = RecipeForm(request.POST) #if POST method, bound form to POST data
        if form.is_valid():         
            form.save()
    else:
        form = RecipeForm() #unbound form.
    recipe_list = Recipe.objects.all()
    return render_to_response('forms/recipes.html',
        {'form': form, 'recipe_list': recipe_list},
        context_instance = RequestContext(request)) 

モデルを保存する前に、ユーザーをモデルに設定するにはどうすればよいですか?

4

2 に答える 2

2

編集:

イグナシオがコメントに追加したので、あなたはイグナシオの答えを受け入れるべきです。

ユーザーを追加する方法は次のとおりです。

from django.shortcuts import render

def recipe(request):
    if request.method == 'POST':
        form = RecipeForm(request.POST) #if POST method, bound form to POST data
        if form.is_valid():         
            obj = form.save(commit=False) # don't save to DB
            obj.creator = request.user # adds the user
            obj.save()
    else:
        form = RecipeForm() #unbound form.
    recipe_list = Recipe.objects.all()
    return render(request,'forms/recipes.html',
        {'form': form, 'recipe_list': recipe_list}) 
于 2012-04-08T05:18:22.477 に答える
2

はい、ビューを保存する前に、レシピ モデルにユーザーを設定する必要があります。

于 2012-04-08T04:54:46.087 に答える