Ho un modello Libro con una chiave esterna per l'utente (il proprietario del libro):modo migliore per aggiungere ulteriori campi Django-resto-quadro ModelViewSet quando creare
class Book(models.Model):
owner = models.ForiegnKey(User)
...
Ho creato un ModelViewSet per il libro che mostra i libri posseduti dalla utente connesso:
class BookViewSet(viewsets.ModelViewSet):
model = Book
serializer_class = BookSerializer
def get_queryset(self):
return Book.objects.filter(owner=self.request.user)
Ora per creare un nuovo libro, voglio salvare campo utente con request.user, non con i dati inviati dal client resto (per una maggiore sicurezza). per esempio:
def create(self, request, *args, **kwargs):
request.DATA['user'] = request.user
... (some code to create new Book from request.DATA using serialize class)
ma ho ottenuto questo errore: Questa istanza QueryDict è immutabile. (significa request.DATA è un QueryDict immutabile e non può essere modificato)
Conosci un modo migliore per aggiungere campi aggiuntivi durante la creazione di un oggetto con il framework django rest?
come rendere proprietario di sola lettura nella classe ModelSerializer? – Ali
Basta passare read_only = True. Vedi http://django-rest-framework.org/api-guide/fields.html # core-arguments –
Uso un ModelSerializer e i campi sono definiti in modo implicito dai campi del modello. – Ali