2017-11-14 3 views
0

Ich versuche DRF Django Rest Framework zu verwenden, um eine Post-API zum Erstellen von Eintrag für 2 Modelle und Zuordnung von Fremdschlüssel Beziehung zu erstellen . Wie erreiche ich das?Django Rest API, wie Post-API für 2 Modelleinträge zu erstellen, und hat Fremdschlüssel mit dem Modell verbunden

Ich habe 2 Modelle - Mitarbeiter Modell, das OneToOne Verbindung mit Benutzer und hat eine ForeignKey Firma - Firmen Modell

Ich möchte einen Beitrag haben Mitarbeiter Modell Eintrag zu erstellen und auch Modell Eintrag Unternehmen und assoziieren die Mitarbeiter der Firma. Der Angestellte möchte ich auch in die Benutzerdaten eingeben (Benutzername, vorname, nachname, usw.).

Im folgenden werden die Code Auszüge:

https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/models.py

class Employee(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='employee') 
    company = models.ForeignKey(Company) 


class Company(models.Model): 
    name = models.CharField(max_length=50) 
    tel = models.CharField(max_length=15, blank=True) 

https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/views.py

class EmployeeWithCompanyCreateView(generics.ListCreateAPIView): 
    """This class defines the create behavior of our rest api.""" 
    queryset = Employee.objects.all() 
    serializer_class = EmployeeWithCompanyCreateSerializer 

    def perform_create(self, serializer): 
     """Save the post data when creating a new bucketlist.""" 
     serializer.save() 

https://gitlab.com/firdausmah/railercom/blob/master/railercom/urls.py

urlpatterns = [ 
    url(r'^employee/$', EmployeeWithCompanyCreateView.as_view(), name="create"), 

https://gitlab.com/firdausmah/railercom/blob/master/railercomapp/serializers.py

class EmployeeWithCompanyCreateSerializer(serializers.ModelSerializer): 

    class Meta: 
     model = Employee 
     fields = ("id","identity_number", "tel") 

Antwort

0

Ihre aktuelle Lösung hat einige etwas falsch: die Felder Liste der EmployeeWithCompanyCreateSerializer Klasse ist Mismatch die Felder der Klasse Employee. In Ihrem Fragekontext empfehle ich Ihnen, die komplizierte Ansicht von Hand zu schreiben.

Verwandte Themen