1

ユーザーは、modelformset_factoryによって作成されたフォームに入力して、django管理者の外部で新しいインスタンスを作成するように求められます。問題は、request.userをフォームに渡す方法がわからないため、フォームの保存時にcreated_byフィールドが無効になることです。

models.py:

from django.db import models
from django.contrib.auth.models import User

class ezApp(models.Model):
    name = models.SlugField(max_length=50, unique=True )
    date_created = models.DateTimeField('date created', auto_now_add=True)
    date_updated = models.DateTimeField('date updated', auto_now=True)
    created_by = models.ForeignKey(User)
    in_use = models.BooleanField()

views.py

from django.shortcuts import render_to_response
from ezmapping.models import *
from django.forms.models import modelformset_factory

def setName(request):
    ezAppFormSet = modelformset_factory(ezApp, extra=1, fields=('name'))
    formset = ezAppFormSet(queryset=ezApp.objects.none())
    if request.method == 'POST':
        formset = ezAppFormSet(request.POST, request.FILES)
        if formset.is_valid():
            formset.save()
    return render_to_response("project/manage_new.html", {'formset': formset, 'title': "New"}, context_instance=RequestContext(request))
4

1 に答える 1

4

created_byインスタンスを保存する前に、フィールドを自分で設定できます。

このようなことをします:

if formset.is_valid():
    instances = formset.save(commit=False)
    for instance in instances:
        instance.created_by = request.user
        instance.save()

この機能に関するドキュメントはこちらです。

于 2013-02-12T21:34:05.067 に答える