【发布时间】:2011-12-03 09:36:26
【问题描述】:
Django 外键快把我逼疯了!我是 Django 的新手,我一直在努力解决我知道必须是一个 非常 简单的问题超过三周但没有成功。我已经搜索了我的问题的答案,但没有什么帮助。
我有一个类似于以下的模型来支持每个人拥有多个电话号码和地址的能力:
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
<...>
class Phone(models.Model):
person = models.ForeignKey(Person)
<...>
number = PhoneNumberField()
class Address(models.Model):
person = models.ForeignKey(Person)
<...>
zipcode = models.CharField(max_length=10)
我有两个问题:
1) 在加入人员、电话和地址时,这是最有效的方式吗?
person = Person.objects.get(pk=1)
phone = Phone.objects.get(person=person)
address = Address.objects.get(person=person)
2) 当将此模型序列化为 JSON 时,我使用的是 Django Serializers 版本 1.1.0 的 Wad of Stuff。以下代码仅返回人员数据,但我需要人员以及相关的电话和地址。怎么了?
print serializers.serialize('json', Person.objects.all(), indent=4, relations=('phone', 'address',))
非常感谢您提供的任何帮助!
编辑:澄清一下,我认为我无法使用 Django 的 ORM 复制以下内容是我的问题(或误解)的根源:
select * from person
left join phone
on phone.person_id = person.id
left join address
on address.person_id = person.id
where person.id = 1
【问题讨论】:
标签: django django-models foreign-keys models