-1

シリアライザでPersonデータをEmployeeに表示しようとしましたが、シリアライザEmployeeSerializerのフィールドpersonsの値を取得しようとしたときにこのエラーAttributeErrorが発生しました。 シリアル化フィールドの名前が正しくない可能性があり、Employeeインスタンスの属性またはキーと一致しない可能性があります。 元の例外テキストは 'Employee'オブジェクトに属性 'persons'がありませんでした。ここでDjangoシリアライザ、foreignkeysエラー

は私のmodels.py

class Person(models.Model): 
    id = models.IntegerField(primary_key=True) 
    name = models.CharField(max_length=50) 
    curp = models.CharField(max_length=50) 
    rfc = models.CharField(max_length=12) 
    gender = models.CharField(max_length=20) 



class Employee(models.Model): 
    id = models.IntegerField(primary_key=True) 
    joining_date = models.DateField() 
    salary = models.DecimalField(18, decimal_places=2, max_digits=50) 
    status = models.IntegerField() 
    person = models.ForeignKey(Person, related_name='persons', on_delete=models.CASCADE) 
    user = models.ForeignKey(User) 
    branch = models.ForeignKey(Branch) 

シリアライザ

class PersonSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Person 
     fields = ('name', 'curp', 'rfc', 'gender') 

class EmployeeSerializer(serializers.ModelSerializer): 
    persons = PersonSerializer(many=True) 


    class Meta: 
     model = Employee 
     fields = ('persons') 

だそれはので、私はforeingキーを呼び出す方法を取得いけないジャンゴに取り組んで私の最初の時間です。 私のデータベースに私は3つの外部キー(ユーザー、人、支店)を持つテーブルEmployeeを持っています ありがとう!

答えて

-1

は、あなたの従業員のシリアライザでは、人への変数名の者を変更しなければならない、と一人だけが、私はすべて返すようにしたいので、もしあなたが偽

class EmployeeSerializer(serializers.ModelSerializer): 
    person = PersonSerializer(many=False,) 


    class Meta: 
     model = Employee 
     fields = ('person') 
+0

に多くを変更することができ、従業員オブジェクトと関連するであろうから、私は仮定しますPerson iのデータはすべてのフィールドを返す必要があり、シリアライザでは1つずつ追加する必要がありますか? – Akarok

+0

申し訳ありませんが、私はあなたの質問を誤解しました。私はあなたが望む方法でそれを編集しました。あなたは実際にそれを正しく使用しますが、外来キーのフィールドをシリアル化するときには、関連する名前ではなく実際のフィールド名を使用する必要があります –

関連する問題