Py学习  »  问与答

ForeignKey的两个问题

gcd0318 • 9 年前 • 3327 次点击  

1,为一个组织设计人员管理系统,其中每个人(User)都有经理(Manager),同时经理也是组织内的用户,那么 User 类可以设计为:

class User(models.Model):
    ....
    manager = models.ForeignKey('self', blank=True)
    ....

考虑到大老板是没有经理的,所以给 manager 字段加上了 blank=True 的属性

但是实际运行的时候得到了

Cannot assign None: "User.manager" does not allow null values.

的错误,我估计可能是因为外键必须非空

为了回避这个问题,我打算定义大老板的经理就是自己。请问这一步应该怎么实现

2,其实这是一个和前面类似的问题,如果外键字段不能是空,那么我可以用其他方式回避这个问题,但有的时候这是无法回避的,比如这样的需求:

设计一个博客,每个帖子(Post)可以被回复(Comment),每个回复还可以再被回复,那么 Post 和 Comment 的定义可以是这样:

class Post(models.Model):
    ....
class Comment(models.Model):
    ....
    main_post = models.ForeignKey(Post)
    upper_comment = models.ForeighKeys('self')
    ....

但是有的回复是直接针对帖子的,所以 upper_comment 可能是空,但是又不能加 blank=True 的属性,应该怎么解决

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/1016
 
3327 次点击  
文章 [ 4 ]  |  最新文章 9 年前