Py学习  »  问与答

ForeignKey的两个问题

gcd0318 • 9 年前 • 3315 次点击  

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
 
3315 次点击  
文章 [ 4 ]  |  最新文章 8 年前
gcd0318
Reply   •   1 楼
gcd0318    8 年前

@saibei88 您这么说我就明白了,原来咱俩说的不是一件事啊

saibei88
Reply   •   2 楼
saibei88    8 年前

@gcd0318 试试看吧,前端展示的时候把空字符串处理下,发帖的时候禁止发全为空字符串的内容

gcd0318
Reply   •   3 楼
gcd0318    8 年前

@saibei88 就是default=""?

saibei88
Reply   •   4 楼
saibei88    9 年前

赋值的时候用"" 代替NULL,NULL和"" 不一样