3
from django.db import models

class Story(models.Model):
    id = models.IntegerField(primary_key=True)
    news_type = models.CharField(max_length=255,null=True)
    category_id = models.CharField(max_length=255,null=True)
    title = models.CharField(max_length=255,null=True)
    created = models.DateTimeField(null=True)
    author = models.CharField(max_length=255, null=True)
    author_title = models.CharField(max_length=255, null=True)
    image_caption = models.TextField(null=True)
    image_credit = models.CharField(max_length=255,null=True)
    image_full_url = models.CharField(max_length=255,null=True)
    body = models.TextField(null=True)
    summary = models.TextField(null=True)
    video_id = models.CharField(max_length=255,null=True)
    external_url = models.CharField(max_length=255,null=True)
    order = models.IntegerField(null=True)

class StoryFactBox(models.Model):
    story = models.ForeignKey('Story', null = True)
    body = models.TextField()

class StoryKeyword(models.Model):
    story = models.ForeignKey('Story', null = True)
    keyword = models.CharField(max_length=255)

哪些架构更改会models.ForeignKey('Story', null = True)导致发生?

我正在阅读文档:

我想使用 remove() 和 clear() ,这是文档的一部分。

为了防止数据库不一致,这个方法只存在于null=True的ForeignKey对象上。如果相关字段无法设置为无 (NULL),则无法从关系中删除对象而不将其添加到另一个对象。在上面的例子中,从 b.entry_set() 中去掉 e 就相当于做 e.blog = None,并且因为博客 ForeignKey 没有 null=True,所以这是无效的。

4

1 回答 1

3

它不会导致架构发生任何变化(只是澄清它只会创建表,不会修改),但是在 syncdb 上,会创建没有 NOT NULL.

您可以通过查看表定义的 SQL 输出python manage.py sqlall my_app并亲自查看!

于 2013-02-08T19:31:46.810 回答