Was ich versuche zu erreichen, ist zu erstellen und App-Objekt über die Django REST Framework. Ich verwende ein verschachteltes Version-Objekt und verknüpfe dieses mit einem bereits vorhandenen Client.Django Serializer - Erstellen Objekt mit Beziehungen
Dies ist das Modell, das ich habe, so könnte man eine bessere Vorstellung zu bekommen:
class Client(models.Model):
client = models.CharField(max_length=200)
mail = models.CharField(max_length=200, null=True)
class Keyword(models.Model):
keyword = models.CharField(max_length=200)
client = models.ForeignKey(Client, related_name='client_keywords',on_delete=models.CASCADE)
class App(models.Model):
client = models.ForeignKey(Client, related_name='client_apps', on_delete=models.CASCADE)
appname = models.CharField(max_length=200, unique=True)
class Version(models.Model):
apps = models.ForeignKey(App, related_name='version',on_delete=models.CASCADE)
version = models.CharField(max_length=20, null=True)
Wie Sie Kunden sehen können Multiples Apps (1-> N) haben, und Apps mehrere Versionen haben (1 -> N)
ich habe folgendes Serializer so implementiert ich das App-Objekt mit den necessari Beziehungen schaffen kann, aber ich muss etwas falsch tun:
class AppSerializer(serializers.ModelSerializer):
version = VersionSerializer(many=True)
client = ClientSerializer()
class Meta:
model = App
fields = ('pk','client',..., 'version')
def create(self, validated_data):
versions_data = validated_data.pop('version')
clients_data = validated_data.pop('client')
app = App.objects.create(**validated_data)
app.client = Client.objects.get(pk=clients_data['client'])
for version_data in versions_data:
Version.objects.create(apps=app, **version_data)
return app
Meine Idee ist hier die bekommen pk von "clients_data ['client']", die ich in der POST sende, holen Sie das Client-Objekt für diese PK und zuweisen Sie es für diese neue App, und danach erstellen Sie die erforderlichen Versionen.
Aber nach vielen Tests die client_id in der Datenbank kontinuierlich leer. Wie kann ich den Client korrekt zuordnen?