我可以在另一个内部启动一个Django模型对象

时间:2013-01-02 18:19:33

标签: django django-models django-forms django-views

from django.db import models
import datetime

class User (models.Model):
    user_name = models.CharField(max_length=200)
    email = models.EmailField(blank=True, null=True)
    url = models.URLField(blank=True, null=True)
    joined_on = models.DateTimeField(default = datetime.datetime.now)

    def __unicode__(self):
        return self.user_name

class Note (models.Model):
    msg = models.TextField(max_length=2000)
    user = models.ForeignKey(User)
    pub_date = models.DateTimeField(default = datetime.datetime.now )

    def __unicode__(self):
        return self.msg[:40]  

这些是我的django模型。

现在,我使用Django Form获取模型的数据。我想做的就是将它们推入数据库。以下是我正在做的代码。

u = User(user_name="my name")
n = Note(msg="hi", user=u)
n.save()

现在,我收到IntegrityError: note_note.user_id may not be NULL错误。

但是,我只是u.save()它没有显示此错误(日期时间仍然存在RuntimeError警告)

这就是我要构建的内容:

  1. 创建一个联系表单,其中user_name,email,url,msg是字段(电子邮件,网址不是必填项)

  2. 将数据推送到db。

  3. 我哪里出错了以及如何解决它

2 个答案:

答案 0 :(得分:2)

新对象的ID在保存之前未定义。首先保存User对象,然后保存Note对象。

答案 1 :(得分:1)

空白:

如果为True,则允许该字段为空。默认值为False。

请注意,这与null不同。 null纯粹与数据库相关,而blank与验证相关。如果字段为空= True,则表单验证将允许输入空值。如果字段为空= False,则需要该字段。

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.Field.blank