Ich habe eine perform_create für ein Objekt, das ein anderes Objekt erstellt.So wird perfom_create erstellt, wenn das Objekt in der Verwaltungssite erstellt wird. Django RestFramework
class DocumentDetailSampleViewSet(viewsets.ModelViewSet):
queryset = DocumentDetailSample.objects.all()
serializer_class = DocumentDetailSampleSerializer
def perform_create(self, serializer):
doc_detail_sample = serializer.save()
query_set = User.objects.all()
ids = query_set.values_list('id', flat=True)
for i in ids:
doc_detail = DocumentDetail()
doc_detail.details_sample = doc_detail_sample
doc_detail.user_id_id = str(i)
doc_detail.save()
Wie man sehen kann, wenn ich eine DocumentDetailSample
ein DocumentDetail
wird auch erstellt erstellen.
Es funktioniert gut, wenn ich einen "POST" mache.
Mein Problem ist, dass DocumentDetailSamples
auch in der Admin-Site erstellt werden kann. Also ... Wenn es in der Admin-Site erstellt wird, funktioniert die perform_create
nicht mehr und die DocumentDetail
wird nicht erstellt.
Was könnte ich tun? Ich möchte die DocumentDetail
auch gleich nach der "admin" DocumentDetailSample
Erstellung erstellen.
danke! Wo sollte ich diese Funktion schreiben? In der ansichten.py? Außerdem importieren Sie "post_save" und verwenden dann "pre_save" im Empfänger. Welches ist das Richtige? :) –
SCHÖN !!! Vielen Dank!!! :) Also, ja, ich schrieb es in der views.py und es ist post_save. _pre_save_ hat kein 'created' :) Danke! –