class Piece(models.Model):
pass
class Article(Piece):
article_piece = models.OneToOneField(Piece, on_delete=models.CASCADE, parent_link=True)
...
class Book(Piece):
book_piece = models.OneToOneField(Piece, on_delete=models.CASCADE, parent_link=True)
...
class BookReview(Book, Article):
pass
我正在查看一些文档,它说上述代码可用于为BookReview提供其他字段和方法,而不会发生任何冲突
我收到错误You are trying to add a non-nullable field 'article_piece' to article without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
2) Quit, and let me add a default in models.py
Select an option: 2
实例化BookReview时,默认值是什么?我将使用article_piece,book_piece的哪个实例?
答案 0 :(得分:0)
此消息显示您为Article
模型所用,没有指定字段article_piece
可能是数据库中的NULL。因此,Django要求您提供默认值(基本上将任何Piece
记录分配给该字段)或由您自己管理。
如果不希望出现此情况,则只需将该字段设置为空即可(也可以为空,这样表格就不需要此字段了):
article_piece = models.OneToOneField(Piece, blank=True, null=True, on_delete=models.CASCADE, parent_link=True)