1
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 フォームを使用してモデルのデータを取得します。私がやりたいのは、それらをデータベースにプッシュすることだけです。以下は私がやっているコードです。

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()このエラーは表示されません (datetime の RuntimeError 警告がまだあります)。

これは私が構築しようとしているものです:

  1. user_name、email、url、msg がフィールドであるコンタクト フォームを作成します (email、url は必須ではありません)。

  2. データを db にプッシュします。

どこが間違っているのか、それを修正する方法

4

2 に答える 2

2

新しいオブジェクトの ID は、保存されるまで定義されません。最初に User オブジェクトを保存してから、Note オブジェクトを保存します。

于 2013-01-02T18:22:26.307 に答える
1

空欄:

True の場合、フィールドは空白にすることができます。デフォルトは偽です。

これは null とは異なることに注意してください。null は純粋にデータベース関連であり、空白は検証関連です。フィールドに blank=True がある場合、フォームの検証により空の値の入力が許可されます。フィールドに blank=False がある場合、そのフィールドは必須になります。

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

于 2013-01-02T19:11:34.647 に答える