Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django POST在2个模型/数据库表中_Python_Django_Django Models_Django Rest Framework - Fatal编程技术网

Python django POST在2个模型/数据库表中

Python django POST在2个模型/数据库表中,python,django,django-models,django-rest-framework,Python,Django,Django Models,Django Rest Framework,我对这一点完全陌生,刚刚完成了我需要的教程。现在我被卡住了,因为我想同时保存两个型号的POST订单中的所有数据。我尝试了这个def create(self,validated_data):但是Altkunde表仍然是空的,而我在Kunde模型中得到了很多新条目 经过几个小时的研究,我找不到解决办法 请给出任何提示或提示 这是我的型号。py class Kunde(models.Model): QR = models.CharField(max_length=3, default='', p

我对这一点完全陌生,刚刚完成了我需要的教程。现在我被卡住了,因为我想同时保存两个型号的POST订单中的所有数据。我尝试了这个
def create(self,validated_data):
但是
Altkunde
表仍然是空的,而我在
Kunde
模型中得到了很多新条目

经过几个小时的研究,我找不到解决办法

请给出任何提示或提示

这是我的型号。py

class Kunde(models.Model):
   QR = models.CharField(max_length=3, default='', primary_key=True)
   created = models.DateTimeField(blank=True, auto_now_add=True)
   Name = models.CharField(max_length=50, blank=True, default='')
   Info = models.TextField(max_length=200, blank=True, default='')
   owner = models.ForeignKey('auth.User', related_name='kunden', on_delete=models.CASCADE)

   class Meta:
        ordering = ('created',)


class AltKunde(models.Model):
   QR = models.CharField(max_length=3, default='', primary_key=True)
   created = models.DateTimeField(blank=True, auto_now_add=True)
   Name = models.CharField(max_length=50, blank=True, default='')
   Info = models.TextField(max_length=200, blank=True, default='')
   Verleiher = models.OneToOneField(User, 'username')

   class Meta:
      ordering = ('created',)
class KundeViewSet(viewsets.ModelViewSet):
    queryset = Kunde.objects.all()
    serializer_class = KundeSerializer
    permission_classes = [IsAdminUser]

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


class AltKundeView(viewsets.ReadOnlyModelViewSet):
    queryset = AltKunde.objects.all()
    serializer_class = AltkundeSerializer
class KundeSerializer(serializers.HyperlinkedModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.username')

    class Meta:
        model = Kunde   #Kunden die Notebook leihen
        fields = ('url', 'QR', 'owner', 'created', 'Name', 'Info')

    def create(self, validated_data):
        Altkundeeintrag = AltKunde.objects.create(**validated_data)
        return Kunde.objects.create(**validated_data)

class AltkundeSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = AltKunde   #Kunden die Notebook geliehen haben (Altbestand)
        fields = ('url', 'QR', 'Verleiher' 'created', 'Name', 'Info')
视图.py

class Kunde(models.Model):
   QR = models.CharField(max_length=3, default='', primary_key=True)
   created = models.DateTimeField(blank=True, auto_now_add=True)
   Name = models.CharField(max_length=50, blank=True, default='')
   Info = models.TextField(max_length=200, blank=True, default='')
   owner = models.ForeignKey('auth.User', related_name='kunden', on_delete=models.CASCADE)

   class Meta:
        ordering = ('created',)


class AltKunde(models.Model):
   QR = models.CharField(max_length=3, default='', primary_key=True)
   created = models.DateTimeField(blank=True, auto_now_add=True)
   Name = models.CharField(max_length=50, blank=True, default='')
   Info = models.TextField(max_length=200, blank=True, default='')
   Verleiher = models.OneToOneField(User, 'username')

   class Meta:
      ordering = ('created',)
class KundeViewSet(viewsets.ModelViewSet):
    queryset = Kunde.objects.all()
    serializer_class = KundeSerializer
    permission_classes = [IsAdminUser]

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


class AltKundeView(viewsets.ReadOnlyModelViewSet):
    queryset = AltKunde.objects.all()
    serializer_class = AltkundeSerializer
class KundeSerializer(serializers.HyperlinkedModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.username')

    class Meta:
        model = Kunde   #Kunden die Notebook leihen
        fields = ('url', 'QR', 'owner', 'created', 'Name', 'Info')

    def create(self, validated_data):
        Altkundeeintrag = AltKunde.objects.create(**validated_data)
        return Kunde.objects.create(**validated_data)

class AltkundeSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = AltKunde   #Kunden die Notebook geliehen haben (Altbestand)
        fields = ('url', 'QR', 'Verleiher' 'created', 'Name', 'Info')
序列化程序.py

class Kunde(models.Model):
   QR = models.CharField(max_length=3, default='', primary_key=True)
   created = models.DateTimeField(blank=True, auto_now_add=True)
   Name = models.CharField(max_length=50, blank=True, default='')
   Info = models.TextField(max_length=200, blank=True, default='')
   owner = models.ForeignKey('auth.User', related_name='kunden', on_delete=models.CASCADE)

   class Meta:
        ordering = ('created',)


class AltKunde(models.Model):
   QR = models.CharField(max_length=3, default='', primary_key=True)
   created = models.DateTimeField(blank=True, auto_now_add=True)
   Name = models.CharField(max_length=50, blank=True, default='')
   Info = models.TextField(max_length=200, blank=True, default='')
   Verleiher = models.OneToOneField(User, 'username')

   class Meta:
      ordering = ('created',)
class KundeViewSet(viewsets.ModelViewSet):
    queryset = Kunde.objects.all()
    serializer_class = KundeSerializer
    permission_classes = [IsAdminUser]

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


class AltKundeView(viewsets.ReadOnlyModelViewSet):
    queryset = AltKunde.objects.all()
    serializer_class = AltkundeSerializer
class KundeSerializer(serializers.HyperlinkedModelSerializer):
    owner = serializers.ReadOnlyField(source='owner.username')

    class Meta:
        model = Kunde   #Kunden die Notebook leihen
        fields = ('url', 'QR', 'owner', 'created', 'Name', 'Info')

    def create(self, validated_data):
        Altkundeeintrag = AltKunde.objects.create(**validated_data)
        return Kunde.objects.create(**validated_data)

class AltkundeSerializer(serializers.HyperlinkedModelSerializer):

    class Meta:
        model = AltKunde   #Kunden die Notebook geliehen haben (Altbestand)
        fields = ('url', 'QR', 'Verleiher' 'created', 'Name', 'Info')

在您的
models.py
中,您可以执行以下操作:

from django.dispatch import receiver
from django.db.models.signals import post_save

class Kunde(AbstractKunde):
    ...

class AltKunde(AbstractKunde):
    ...

@receiver(post_save, sender=Kunde)
def handle_Kunde_created(sender, instance, *args, **kwargs):
    //kwargs['created'] will return True if a Kunde instance is created.
    if not kwargs.get('created'):
        // I'm not doing anything here, but potentially
        // you can sync object updates here as well
        return

    AltKunde.objects.create(
        QR=instance.QR,
        created=instance.created,
        Name=instance.Name,
        Info=instance.Info,
        Verleiher=instance.Verleiher)

在你的KundeSerializer中,你不必再这样做了:
Altkundeeintrag=AltKunde.objects.create(**validated_data)

你能不能把
views.py
models.py
放在这里,不要链接。好的,我插入了整个代码。:)您可以使用
Kunde
上的保存信号来保存
AltKunde
我尝试了这些信号,但似乎无法获得正确的代码结构。有一个语法错误。