小编Noa*_*itz的帖子

Django:ValueError:在尝试创建干净失败时,无法在ForeignField上分配任何内容

在提交表单时,我很难弄清楚如何为ForeignKey字段自动创建模型实例.这是一个简单的玩具网站,说明了这个问题:

我有两个型号,Model1和Model2.Model2包含一个到Model1的ForeignKey.我希望用户能够通过专门选择要存储在ForeignKey中的Model1实例,或者将该值留空并让自动生成Model1的实例来创建Model2的实例.

这就是我觉得代码看起来像的样子.我的models.py代码非常简单:

# models.py
from django.db import models
from django.core.validators import MinValueValidator


class Model1(models.Model):

    # Note this field cannot be negative
    my_field1 = models.IntegerField(validators=[MinValueValidator(0)])


class Model2(models.Model):
    # blank = True will make key_to_model1 not required on the form,
    # but since null = False, I will still require the ForeignKey
    # to be set in the database.
    related_model1 = models.ForeignKey(Model1, blank=True)

    # Note this field cannot be negative
    my_field2 = models.IntegerField(validators=[MinValueValidator(0)])
Run Code Online (Sandbox Code Playgroud)

forms.py有点牵扯,但是发生的事情非常简单.如果Model2Form没有收到Model1的实例,它会尝试在clean方法中自动创建一个,验证它,如果它有效,它会保存它.如果它无效,则会引发异常.

#forms.py
from django import forms
from django.forms.models …
Run Code Online (Sandbox Code Playgroud)

python django django-forms

7
推荐指数
1
解决办法
1475
查看次数

标签 统计

django ×1

django-forms ×1

python ×1