2016-03-21 14 views
1

Ich muss in der Lage sein, einen Beitrag auf einem API-Endpunkt zu tun, um ein Adgroup-Modell zu speichern. Das Modell hat eine viele zu viele Feld. Ich weiß, dass ich die create() -Methode überschreiben muss. Aber wie geht es mir? Die eingehenden Anforderungsdaten haben die ID für das andere Modell (Creative). Diese ID ist bereits in der Creative-Tabelle vorhanden.Saving django Modell mit vielen zu vielen Beziehung zu Datenbank in Django Rest Framework

Django erstellt eine andere Tabelle namens adgroup_creative, um diese M2M-Beziehung zu speichern. Ich muss diese Tabelle beim Speichern dieses AdGroup-Objekts ausfüllen.

class AdGroup(models.Model): 
    adgroup_name = models.CharField(max_length=200, verbose_name="Name") 
    creative = models.ManyToManyField(Creative, verbose_name="Creative") 

class Creative(models.Model): 
    creative_name= models.CharField(max_length=200, verbose_name="Name", default=0) 
    ad_type= models.PositiveIntegerField(max_length=1,verbose_name="Ad Type") 

class AdGroupSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = AdGroup 
     fields = ('id','adgroup_name','creative') 

class CreativeSerializer(serializers.ModelSerializer): 
    class Meta: 
     model = Creative 
     fields = ('id','creative_name') 

class AdGroupViewSet(mixins.CreateModelMixin, mixins.RetrieveModelMixin, mixins.UpdateModelMixin, mixins.ListModelMixin, viewsets.GenericViewSet): 
    queryset = AdGroup.objects.all().order_by('-id') 
    serializer_class = AdGroupSerializer 

https://codereview.stackexchange.com/questions/46160/django-rest-framework-add-remove-to-a-list

Save a many-to-many model in Django/REST?

Antwort

0

Sie sollten am serializer relation documentation einen Blick.

Sie brauchen nichts Besonderes, wenn Sie einfach ID verwenden, um eine M2M-Beziehung mit DRF darzustellen. Sie müssen die Methoden create/update nur überschreiben, wenn Sie nicht vorhandene verwandte Objekte bereitstellen oder verschachtelte Serializer verwenden möchten.

Im aktuellen Fall benötigen Sie keine verschachtelten Serialisierer, da Sie die IDs der zugehörigen Instanzen bereitstellen möchten.

Verwandte Themen