vkill'blog

“技术本身没有太多价值,掌握了新的思考方式才是真的收获”

django 一对多 多外键的用法

09:38 , vkill
下面这个例子是 人员表和任务表,人员表和任务表是一对多的,但是这里有 分配任务的人 和 接受任务的人,所以这里就要用到 一对多 多外键
下面是 models.py 的代码及例子

class Person(models.Model):
    name = models.CharField(max_length=50)

class Task(models.Model):
    assign = models.ForeignKey(Person,related_name='assign')
    accept = models.ForeignKey(Person,related_name='accept')


#use
>>> Person.objects.create(name='a')
<Person: Person object>
>>> Person.objects.create(name='b')
<Person: Person object>
>>> Person.objects.create(name='c')
<Person: Person object>
>>> Person.objects.create(name='d')
<Person: Person object>
>>> Task.objects.create(assign_id=1,accept_id=2)
<Task: Task object>
>>> Task.objects.create(assign_id=1,accept_id=3)
<Task: Task object>
>>> Task.objects.create(assign_id=1,accept_id=4)
<Task: Task object>
>>> Task.objects.create(assign_id=2,accept_id=3)
<Task: Task object>
>>> Task.objects.create(assign_id=2,accept_id=4)
<Task: Task object>

>>> Person.objects.get(name='b').assign.all()
[<Task: Task object>, <Task: Task object>]
>>> Person.objects.get(name='b').accept.all()
[<Task: Task object>]
>>> Task.objects.get(pk=1).assign.name
u'a'
>>> Task.objects.get(pk=1).accept.name
u'b'

Last modified by vkill on2011/05/30 09:42
类别:python & django | Tags: , , , , | 0 条评论, 2121 次阅读
网友评论(0):
发表评论:

Nickname: 
Email:
Site URI: