gpt4 book ai didi

django - 在 Django 中,如何将 ForeignKey 传递给 Model 的实例?

转载 作者:行者123 更新时间:2023-12-04 14:32:53 24 4
gpt4 key购买 nike

我正在编写一个存储“工作”的应用程序。它们被定义为具有链接到“用户”的外键。我不明白如何在创建时将 ForeignKey 传递到模型中。我的工作模型在没有外键的情况下运行良好,但是现在我正在尝试将用户添加到系统中,我无法验证表单。

模型.py:

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

class Job(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=50, blank=True)
pub_date = models.DateTimeField('date published', auto_now_add=True)
orig_image = models.ImageField('uploaded image', upload_to='origImageDB/', blank=True)
clean_image = models.ImageField('clean image', upload_to='cleanImageDB/', blank=True)
fullsize_image = models.ImageField('fullsize image', upload_to='fullsizeImageDB/')
fullsize_clean_image = models.ImageField('fullsize clean image', upload_to='fullsizeCleanImageDB/')
regions = models.TextField(blank=True)
orig_regions = models.TextField(blank=True)

class JobForm(forms.ModelForm):
class Meta:
model = Job

在 views.py 中,我创建的对象如下:
if request.method == 'POST':
form = JobForm(request.POST, request.FILES)
if form.is_valid():
#Do something here

我知道这会将表单数据和上传的文件传递给表单。但是,我不明白如何传入要设置为外键的用户。

提前感谢任何可以提供帮助的人。

最佳答案

Django 中的典型模式是:

  • 排除 user来自模型表单的字段
  • commit=False 保存表单
  • 套装job.user
  • 保存到数据库

  • 在你的情况下:
    class JobForm(forms.ModelForm):
    class Meta:
    model = Job
    exclude = ('user',)

    if request.method == 'POST':
    form = JobForm(request.POST, request.FILES)
    job = form.save(commit=False)
    job.user = request.user
    job.save()
    # the next line isn't necessary here, because we don't have any m2m fields
    form.save_m2m()

    请参阅 model form save() method 上的 Django 文档想要查询更多的信息。

    关于django - 在 Django 中,如何将 ForeignKey 传递给 Model 的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9332040/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com