簡體   English   中英

Django Form 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM