Angenommen, ich habe Django Modelle zu schreiben, wie folgt:Wie Nested DRF Serializer mit zwei Fremdschlüsselfelder
class Car(models.Model):
name = models.CharField()
model = models.CharField()
type = models.CharField()
class Scooter(models.Model):
name = models.CharField()
model = models.CharField()
type = models.CharField()
class User(models.Model):
name = models.CharField()
car = models.ForeignKeyField()
scooter = models.ForeignKeyField()
und die Serializer wie folgt:
class CarSerializer(serializer.ModelSerializer):
class Meta:
model = Car
fields = (
'name',
'model',
'type'
)
class ScooterSerializer(serializer.ModelSerializer):
class Meta:
model = Scooter
fields = (
'name',
'model',
'type'
)
class UservehicleCreateSerializer(serializer.ModelSerializer):
car = serializers.PrimaryKeyRelatedField(read_only=True)
scooter = serializers.PrimaryKeyRelatedField(read_only=True)
class Meta:
model = User
fields = (
'name',
'car',
'scooter'
)
So das Szenario so etwas wie dieses: Die car
Daten und scooter
Daten sind bereits erstellt lassen Sie uns annehmen, beide haben pk=1
. und ich möchte die User
Daten mit dem Serializer jeweils erstellen. Aber kämpfen, um die tatsächliche Ressource für das gleiche in meinem Fall zu finden. Die Daten für Auto und Roller sind schon da, ich brauche sie nicht neu zu erstellen.
haben versucht, was ist hier in DRF Documentation for writing serialized nested.
und Daten für Api post request
ist wie folgt:
{
'name': "Nikhil",
'car': 1,
'scooter': 1
}
Erste Fehler:
IntegrityError: (1048, "Column 'car_id' cannot be null")
auf dieses Ding Hilfe brauchen. Danke!
Aber Sie haben hier keine verschachtelten Daten, so verschachtelte Serialisierer ist der falsche Ansatz. Ihre Benutzerdaten enthalten Links zu den Primärschlüsseln der zugehörigen Modelle. Verwenden Sie daher das [PrimaryKeyRelatedField] (http://www.django-rest-framework.org/api-guide/relations/#primarykeyrelatedfield). –
Ok, ich verstehe diesen einen Aspekt meines Ansatzes (Mein Problem). Und als ich sie in das 'PrimaryKeyRelatedField' verwandelte, konnte ich keine Daten erstellen. –
Also, was hast du versucht, und welchen Fehler hast du bekommen? –