Django:保存已排除的字段

时间:2016-11-28 15:44:07

标签: django forms models

我有一个模特:

from django.db import models
from tinymce.models import HTMLField

class Team(models.Model):
    name = models.CharField(max_length=100, verbose_name='Team name')
    city = models.CharField(max_length=100, verbose_name='Team city')
    biography = HTMLField(verbose_name='Team biography')
    country = models.ForeignKey('Country')
    slug = models.SlugField(max_length=100)

    def __str__(self):
        return self.name


class Country(models.Model):
    name = models.CharField(max_length=100, verbose_name='Country name')
    code = models.CharField(max_length=5, verbose_name='Country code')

    def __str__(self):
        return self.code

这个模型的表格:

from django import forms
from teams.models import Team

class TeamForm(forms.ModelForm):
    class Meta:
        model = Team
        fields = (
            'biography',
            'city',
            'country'
        )

这是我的观点:

def add(request):
    if request.method == 'POST':
        form = TeamForm(request.POST)

        if form.is_valid():
            send = True
            form.save()
    else:
        form = TeamForm()
    return render(request, 'teams/add.html', locals())

正如您所看到的,我的所有模型字段都是必需的,因为我没有添加参数' null'在我的模型属性中为True。 在我的ModelForm中,为了测试,我只需指定字段传记,城市和国家。

但是当我填写表单并发送它时,数据会保存在数据库中,但是缺少名称和slug ....

为什么我没有django例外? 谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

但这些字段都没有保存为Null。它们都是字符字段(SlugField是CharField的子类),空字符串保存为空字符串 - 从数据库的角度来看,它完全有效。