次のコードがあります。
data/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())
多数の電話番号が提供されているにもかかわらず、回線が電話番号を出力しないことです。返された辞書も空です。
コンテキスト内に保存された GenericRelation オブジェクトにアクセスするにはどうすればよいStaff
ですか?
編集:
次のコード:
for tel in TelephoneNumber.objects.all():
print(tel)
print(tel.of)
保存されているすべての電話番号を教えてくれ、tel.of
その電話番号が属する適切なスタッフ ユーザーを通じて提供されます。
では、なぜ機能しないのでしょうかself.telephonenumbers.all()
(self.user
電話番号が保存されているはずの適切なユーザーも返されます)。