1

つまり、外部キーを持つクラスがあります。

これは私のコードです

class Proxy(models.Model):
  class Meta:
    db_table = 'Proxy'
  equipment = models.ForeignKey('Equipment', primary_key=True)      
  pop = models.ForeignKey('Pop')

さて、いつものように

import django.core.serializers as Serializer
res = Proxy.objects.filter(equipment_id__exact='eq1')
Serializer.serialize('json', res)

json 出力には、必要な名前ではなく、ポップの「id」が含まれています。

だから私は Manager クラスを使用しました。これが今の私の Pop クラスです。

class PopManager(models.Manager):
  def get_by_natural_key(self, name):
    return self.get(name=name)

class Pop(models.Model):
  POP_TYPES = (
    ('phy','phy'),
    ('cloud','cloud'),
  )

  class Meta:
    db_table = 'Pop'
    unique_together = ('name', 'vip')
  objects = PopManager()
  name = models.CharField(max_length=10)
  type = models.CharField(max_length=10, choices=POP_TYPES)

  def natural_key(self):
    return (self.name)

しかし、この後、私がするとき

res = Proxy.objects.filter(equipment_id__exact='eq1')
Serializer.serialize('json', res, use_natural_keys=True)

TypeError: Equipment: eq1 is not JSON serializable というエラーが表示されます

この外部キーのシリアル化にも wadofstuff を試してみましたが、どうやら Django1.5 では simplejson と json の間に衝突があり、クエリがエラーをスローしていました。だから私は振り出しに戻ります。

どんな助けでも非常に高く評価されます。私は何時間も髪を分けています。

4

2 に答える 2

0

アグニバ、

行を削除するだけです:

db_table = 'ポップ'

于 2013-11-13T17:35:25.957 に答える