很抱歉提出愚蠢的问题,但我不明白。我正在尝试使用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表单
答案 0 :(得分:1)
您刚在['unit']
之后错过了request.POST
:
def ideaNewForm(request):
unit = Unit.objects.get(name=request.POST['unit'])
(...remaining codes...)
答案 1 :(得分:1)
我不太确定为什么要尝试单独购买该单元。这是在表单中选择的内容,无需获取;仅保存表单将创建具有所选单位的帖子。您唯一需要做的就是添加用户。
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})