2017-06-09 5 views
0

Ich habe eine Microservice-Anwendung, die ein Objekt von Service zu Service übergeben muss, und der Empfänger muss dieses Objekt in der Datenbank speichern. Das Objekt, das ich übergeben möchte, hat ein Feld, das ein Fremdschlüssel für eine andere Tabelle ist. Das heißt:Django-Modelle, deserialize PrimaryKeyRelatedField

 
class RelatedModel(models.Model): 
    id=models.CharField(max_length=3, primary_key=True) 
    name=models.CharField(max_length=30)

class PrimaryModel(models.Model): id=models.IntegerField(primary_key=True) rel_model=models.ForeignKey(RelatedModel)

class RelatedSerializer(serializers.ModelSerializer): class Meta: fields = 'all' model = RelatedModel

class PrimarySerializer(serializers.ModelSerializer): rel_model = RelatedSerializer()

class Meta: 
    fields = '__all__' 
    model = PrimaryModel 

jedoch in diesem Fall der Serializer auf der Empfängerseite ungültig war und sagte, dass das zugehörige Modell bereits in der db existiert.

Ich habe versucht, mit PrimaryKeyRelatedField, aber dann der empfangende Serializer enthält nicht die rel_model überhaupt.

Wie kann ich das zugehörige Feld im empfangenden Serializer deserialisieren?

+0

Können Sie bitte die Ansicht zeigen – zaidfazil

Antwort

0

Haben Sie versucht, Ihre Serializer wie diese verwenden,

class RelatedSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = RelatedModel 
     fields = ('name',) 

class PrimarySerializer(serializers.ModelSerializer): 
    rel_model = RelatedSerializer() 
    class Meta: 
     model = PrimaryModel 
     fields = ('rel_model',) 

Wenn Daten durch Serializer Entsendung id nicht, da es primär übergeben werden können Schlüsselfeld ist.