![](/img/trans.png)
[英]Django Createview save form and redirect to page according to the id of the foreignkey
[英]Django Form ForeignKey save
很抱歉提出愚蠢的問題,但我不明白。 我正在嘗試使用Django Forms,我有2個模型
class Post(models.Model):
unit = models.ForeignKey('Unit',on_delete=models.CASCADE, primary_key=False)
和
class Unit(models.Model):
name = models.CharField(max_length=120, unique = True)
我已經創建了一個表格
from django import forms
from .models import Post, Unit, StatusOfPost
class PostForm(forms.ModelForm):
class Meta:
model = Post
fields = [
'unit',
]
比我寫的view.py
def ideaNewForm(request):
unit = Unit.objects.get(name=request.POST['unit'])
user = request.user
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
idea = form.save(commit=False)
idea.unit = unit
idea = Post.objects.create(
author = user,
)
return redirect('postsList')
else:
form = PostForm()
return render(request, 'post_new.html', {'form':form})
單元匹配查詢不存在。-和我有這樣的問題。 我有一個下拉列表,它是一個單元模型。 如何正確保存?
在沒有Django Form的情況下
unit = Unit.objects.get(name=request.POST['unit'])
而且效果很好,但是我想使用Django Forms
您在request.POST
之后僅缺少一個['unit']
:
def ideaNewForm(request):
unit = Unit.objects.get(name=request.POST['unit'])
(...remaining codes...)
我不太清楚為什么要嘗試單獨購買該單元。 這是在表單中選擇的內容,無需獲取; 僅保存表單將創建具有所選單位的帖子。 您唯一需要做的就是添加用戶。
def ideaNewForm(request):
if request.method == 'POST':
form = PostForm(request.POST)
if form.is_valid():
idea = form.save(commit=False)
idea.author = request.user
idea.save()
return redirect('postsList')
else:
form = PostForm()
return render(request, 'post_new.html', {'form':form})
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.