これを行う方法を理解するのに少し苦労しています。私は最善を尽くして Google を検索しましたが、運がありませんでした。
少しのコードから始めて、何をしようとしているのかを説明します。
models.py
class Action(models.Model):
title = models.CharField(max_length=200)
owner = models.ForeignKey(User, related_name='actions')
created_by = models.ForeignKey(User, related_name='+', editable=False)
modified_by = models.ForeignKey(User, related_name='+', editable=False)
class ActionForm(ModelForm):
class Meta:
model = Action
ビュー.py
デフォルトでは、所有者のドロップダウン フィールドがあります。ユーザーが所有者の代わりにテキスト フィールドに新しいユーザー名を入力できるようにするアイコンがあります。送信されたかどうかを確認し、owner_new
送信されている場合はそのユーザーを作成します。次に、owner
フィールドをその値に設定して、それform.is_valid()
が true になるようにする必要があります。
def action_create(request):
if request.method == 'POST':
form = ActionForm(request.POST)
# check if new user should be created
if 'owner_new' in request.POST:
# check if user already exists
user = User.objects.get(username=request.POST.get('owner_new'))
if not user:
user = User.objects.create_user(request.POST.get('owner_new'))
# HERE IS WHERE I'M STUMPED
form.owner = user.id
if form.is_valid(): # THIS FAILS BECAUSE form.owner ISN'T SET
action = form.save(commit=False)
action.created_by = request.user
action.modified_by = request.user
action.save()
return redirect('action_register:index')
else:
form = ActionForm()
return render(request, 'actions/create.html', {'form': form})