Ich habe Post-Modell und Bezeichner-Modell. Beide sind verwandt, da die PK des Posts der FK des Identifikators ist. Während ich die Daten aus der post-Tabelle zurücksende, muss ich auch die identifier-Tabellendaten zurückgeben. Wie kann ich es effizient machen?In Django Rest Framework Serializer, wie kann ich die Daten der Fremdschlüsseltabelle zusammen mit Haupttabelle zurückgeben?
models.py
class SharedIdentifier(models.Model):
post = models.ForeignKey('post.Post',related_name='ref_posts', on_delete=models.CASCADE)
label = models.CharField(max_length=32)
value = models.CharField(max_length=50)
serializers.py
class SharedIdentifierSerializer(serializers.ModelSerializer):
class Meta:
model = SharedIdentifier
fields = ('id', 'post', 'label', 'value',)
read_only_fields = ('post')
class PostSerializer(serializers.ModelSerializer):
author = UserSerializer(required=False,)
ref_user = UserSerializer(read_only=True)
ref_user_id = serializers.PrimaryKeyRelatedField(queryset=User.objects.all(), write_only=True, source='ref_user')
identifier = serializers.CharField(max_length=32, write_only=True)
identifier_info = SharedIdentifierSerializer(required=False,many=True,read_only=True)
class Meta:
model = Post
fields = ('id', 'author', 'ref_user', 'ref_user_id', 'status', 'message', 'type', 'parent_id', 'rating', 'create_date', 'close_date','identifier','identifier_info',)
read_only_fields = ('status', 'close_date', 'author', 'ref_user','identifier_info',
können Sie Ihren Modellcode eingeben? Ich bin mir nicht sicher, ob ich die Beziehung zwischen Ihren Modellen verstehe –
Hinzugefügt Modellcode. –
Versuchen Sie, 'source = ref_posts' zu Ihrem identifier_info-Serialisierungsfeld hinzuzufügen. Sieht so aus, als ob es nicht wissen könnte, wo nach den gewünschten Daten gesucht werden soll. –