2016-05-16 11 views
1

ich zusammen mit Galerie (mehrere Bild-Upload) .My Modelle sehen dieseListen sind derzeit nicht in HTML-Eingabe in Ruhe Rahmen unterstützt

class Rental(models.Model): 
    ownerName = models.CharField(_("Owner's Name"),max_length=255, blank=True,null=True, 
     help_text=_("Owner's Full Name")) 
    renter = models.ForeignKey(User,null=True,blank=True) 
    email = models.CharField(max_length=120,blank=True,null=True) 
    phoneNumber = models.PositiveIntegerField(blank=False,null=True, 
     help_text=_("Phone number of contact person")) 

class Gallery(models.Model): 
    rental = models.ForeignKey('Rental', null=True, on_delete=models.CASCADE,verbose_name=_('Rental'), related_name="gallery") 
    image = models.ImageField(blank=True,upload_to='upload/',null=True) 

serializers.py eine api zum Erstellen einer Miete Informationen entwerfen wollte

class GalleryListSerializer(ModelSerializer): 
    class Meta: 
     model = Gallery 

class RentalCreateUpdateSerializer(ModelSerializer): 
    gallery = GalleryListSerializer(many=True) 
    class Meta: 
     model = Rental 
     exclude = ('id','slug','is_published','created_on','modified_on',) 

views.py

class RentalCreateAPIView(CreateAPIView): 
    queryset = Rental.objects.all() 
    serializer_class = RentalCreateUpdateSerializer 
    # permission_classes = [IsAuthenticated] 

    def perform_create(self, serializer): 
     serializer.save(user=self.request.user) 

    def create(self,validated_data): 
     ownerName=validated_data.get('ownerName',None) 
     renter = validated_data.get('renter', None) 
     email=validated_data.get('email',None) 
     phoneNumber=validated_data.get('phoneNumber',None) 
     image=validated_data.pop('image') 
     return Rental.objects.create(ownerName=ownerName,renter=renter,phoneNumber=phoneNumber,email=email,image=image) 

Wie kann ich mehrere Bilder hochladen für jede Miete aktivieren? was ich bekommen ist

enter image description here

Antwort

2

Es ist nicht klar, ob Sie über eine Datei-Upload-Formular innerhalb der Browsable API Renderer fragen, oder wenn Sie rein über die Rohrleitungen innerhalb Django fragen zu speichern und Anzeigen von Bildern. Ich antworte bezüglich der Installation, d. H. Hochladen und Speichern.

Tutorial-Dateien für das Hochladen von REST-API verwenden, lesen Sie vielleicht diese über die ersten besser Hintergrund zu erhalten: https://medium.com/@jxstanford/django-rest-framework-file-upload-e4bc8de669c0#.i5pun7abs

Beachten Sie, wie sie den Parser im FileUploadViewSet gesetzt. Dieses FileUpload-Modell entspricht Ihrem Galerie-Modell. Sie sollten in der Lage sein parser_classes auf Ihre CreateAPIView wie folgt hinzuzufügen: diese für weitere Informationen

# views.py 
from rest_framework.parsers import FormParser, MultiPartParser 
from rest_framework.viewsets import ModelViewSet 
from probably.obtain.models import FileUpload 
from probably.obtain.serializers import FileUploadSerializer 


class FileUploadViewSet(ModelViewSet): 

    queryset = FileUpload.objects.all() 
    serializer_class = FileUploadSerializer 
    parser_classes = (MultiPartParser, FormParser,) 

    def perform_create(self, serializer): 
     serializer.save(owner=self.request.user, 
         datafile=self.request.data.get('datafile')) 

Lesen Sie weiter, wie/wann Ihr Parser, und einige mehr Schnipsel wählen: http://www.django-rest-framework.org/api-guide/parsers/