我有以下代碼:Python中得到GenericRelation對象
數據/ telephone.py:
class TelephoneNumber(models.Model):
MOBILE = 0
HOME = 1
TELEFON_CHOICES = (
(MOBILE, _("Mobile")),
(HOME, _("Landline")),
)
object_id = models.PositiveIntegerField()
content_type = models.ForeignKey(ContentType)
of = generic.GenericForeignKey('content_type', 'object_id')
label = models.SmallIntegerField(choices=TELEFON_CHOICES)
number = models.CharField(max_length=20, blank=True)
model.py:
class Staff(models.Model):
user = models.OneToOneField(User)
telephonenumbers = GenericRelation(TelephoneNumber, related_query_name='telnumber')
不,我想提供一個函數來檢索這樣的用戶的每個電話號碼:
def get_telnumbers(self):
tellist = []
#print(self.telephonenumbers.all())
for tel in self.telephonenumbers.all():
tellist.append(tel)
return tellist
問題是,行print(self.telephonenumbers.all())
不打印任何telephonenumbers,即使提供了很多。 返回的字典也是空的。
如何訪問保存在Staff
上下文中的GenericRelation對象?
編輯:
下面的代碼:
for tel in TelephoneNumber.objects.all():
print(tel)
print(tel.of)
給我保存的每一個電話號碼,並通過tel.of
該電話號碼屬於合適的員工用戶。
那麼爲什麼不是self.telephonenumbers.all()
工作(self.user
也返回電話號碼應該保存的正確用戶)?
是你的問題解決了嗎? – 2014-09-22 16:50:34
@msngupta請參閱我的編輯,謝謝 – 2014-09-23 17:10:58