Speichern ich folgendes tun:django ruhen Daten zu Serializer hinzufügen, wenn
models.py
class MyModel(TimeStampedModel, models.Model):
name = models.CharField(max_length=100)
owner = models.ForeignKey(settings.AUTH_USER_MODEL)
serializers.py
class MyModelSerializerCreate(serializers.ModelSerializer):
class Meta:
model = MyModel
fields = (
'name',
)
Und ich möchte hinzufügen, als Eigentümer der aktuelle Benutzer in request.user
. Momentan füge ich dies in meiner Ansicht direkt hinzu, indem ich request.data mit dem Benutzer auflade und dann die aktualisierten Daten an meinen Serializer übergebe.
data = request.data
# Add owner to data
data["owner"] = request.user.pk
serializer = self.get_serializer(data=data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
Ich mag würde dies direkt in meinem Serializer tun, aber nicht einen Weg finden kann richtig es tun, weil es wie die Datenüberprüfung zu mir aussieht. Ist das eine gute Idee? Soll ich diese Logik in meinen Ansichten beibehalten oder sie in meinen Serializer verschieben?
Hum das sieht gut aus, aber es überschreibt die erstellen Funktion des ModelSerializer die tut eine Menge Dinge wie zum Beispiel many_to_many Beziehung verwalten. Es wäre cool, wenn ich meinen Benutzer direkt in valided_data –
@ v.thorey setzen könnte, so dass Sie "valided_data" aktualisieren und dann 'super' aufrufen könnten, um alle Standardverhalten bereitzustellen, oder Sie könnten' perform_create' in Ihrer Ansicht verwenden. Ich werde meine Antwort aktualisieren –
Hum in der Tat das ist schlau :) danke –