【问题标题】:Django : Excluded fields are savedDjango:保存排除的字段
【发布时间】:2016-11-28 15:44:06
【问题描述】:

我有一个模型:

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 异常? 感谢您的帮助

【问题讨论】:

  • 那是你真正的缩进吗?无论有效与否,您都保存
  • 已编辑,但我有同样的问题

标签: django forms models


【解决方案1】:

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

【讨论】:

  • 好的,所以mysql保存它有空字符串??
  • 例如,如果我没有在表单页面中填写字段城市,我会收到一条错误消息...
  • 嗯,是的,城市字段在您的表单上。
  • 我不明白。
  • 我的模型可以将name和slug保存为空字符串,但是在我的表单中,如果我没有为字段指定值,它不能保存?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-14
  • 2011-01-27
  • 2011-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多