2013-02-08 96 views
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)会导致什么模式更改?django ForeignKey null = true

我从文档阅读:

我想用remove()方法和明确的(),这是文件的一部分。

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

回答

3

它不会造成对架构的更改(只是澄清它仅创建表,不修改),但在执行syncdb,将创建SQL语句没有NOT NULL

您可以通过python manage.py sqlall my_app检查表格定义的SQL输出,并亲自体验!