Py学习  »  Django

求助,关于model中字段类型的问题。

Hiro • 10 年前 • 5370 次点击  

我用例子说明下我的疑问

有a、b、c三个小孩子和 A、B两个家庭,三个小孩是流浪儿,谁都可以救助他们。

这两个家庭都很有爱心,都把这三个小孩当做自己的孩子,但是小孩子们并不知道。

这时候问题来了,小孩与两个家庭之间的关系为

A-a
A-b
A-c
B-a
B-b
B-c

请问在数据库中想表示这种关系需要如何设置字段类型呢?

class Home(models.Model):
    children = ???

用外键的话,只能设置一个,用ManyToManyField就变成了如下的关系

A-a
a-A
A-b
b-A
A-c
c-A
B-a
a-B
B-b
b-B
B-c
c-B

请问这种我有三个小苹果的关系该怎么定义字段啊,因为苹果不知道它是属于我的啊。。。XD、

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/728
 
5370 次点击  
文章 [ 7 ]  |  最新文章 10 年前
Hiro
Reply   •   1 楼
Hiro    10 年前

@Django中国社区 我这小菜鸟连自己的问题都脑袋疼。。。>_<

Py站长
Reply   •   2 楼
Py站长    10 年前

@Hiro 好吧。。你这个方案不就是我第一个给的方案吗。。

社区要慢慢来。。你多来回答问题别人的问题,就会提高了:)

Hiro
Reply   •   3 楼
Hiro    10 年前

@Django中国社区 google 了一阵子,发现好多人想实现类似的功能,最后还是使用自定义模型了,结合 ForeignKey 和 related_name 实现 的需求。

谢谢老大的回复!!!

关于 OneToMany :http://blog.amir.rachum.com/blog/2013/06/15/a-case-for-a-onetomany-relationship-in-django/

感觉社区人好少,是因为 Django 高大上,大家都是很牛叉的原因么。。。大神们都在编码。。。

Hiro
Reply   •   4 楼
Hiro    10 年前

@Django中国社区 哎呀,,,我这破嘴。。。 还是我描述的不够准确,再加一个限定条件,孩子的数量是不确定的。

其实我就是想实现这样的一个逻辑 有很多个同级节点,每个节点可以指定其他节点为它的child,用manytomany就成了双向的关系,用foreignkey就只能指定一个,所以来此求助。。。本想举个栗子。。。结果越举越乱了。。。小的嘴笨。。。大人见谅。。。XD

Py站长
Reply   •   5 楼
Py站长    10 年前

如果所有家庭都拥有所有孩子的话

就不需要用数据库依赖表示了

class Home(models.Model):
        name

class Child(models.Model):
        name

childs=Child.objects.all()

所有home都拥有这个集合,不就好了。

Hiro
Reply   •   6 楼
Hiro    10 年前

@Django中国社区 谢谢前辈的回复。 很抱歉我的问题中的最后一句话没有描述清楚,我想实现的模型中有很多个家庭,但是都把孩子们作为自己的孩子,孩子不需要找到自己的所属家庭,如果用了ForeignKey的话,家庭是不是就只能有一个了。

Py站长
Reply   •   7 楼
Py站长    10 年前
 class Home(models.Model):
        name

class Child(models.Model):
    # 所属主题
    home = models.ForeignKey(Home, verbose_name = _('Home'), related_name = 'children')

child.home 可以访问它所属的家庭

home.children 可以得到孩子的集合