объект не имеет атрибута в Django Rest Framework - PullRequest
0 голосов
/ 09 июля 2020

Я разрабатываю мобильное приложение с Django Rest Framework сзади и React Native спереди. У меня есть модели и вложенные сериализаторы. Мне нужно заодно вставить в них запись. Но у меня объект "Сущность" не имеет атрибута "автомобильная" ошибка. Когда я проверяю подобные примеры, я не понимаю, в чем я ошибаюсь. Сначала будет вставлен объект, а после этого будет вставлен автомобиль с подключением этого объекта.

Не могли бы вы мне помочь?

class Entity(models.Model):

    customer = models.CharField(max_length=100, null=True, blank=True)
    seller = models.CharField(max_length=100, null=True, blank=True)
    entity_name = models.CharField(max_length=50, blank=True, default='')

    class Meta:
        verbose_name_plural = u"Entities"
        verbose_name = u"Entity"
    
    def __str__(self):
        return "%s %s" % (self.id, self.entity_name)

class Automobile(models.Model):
    entity = models.ForeignKey(Entity, on_delete=models.CASCADE, blank=True)

    entity_address = models.CharField(max_length = 250, blank = True, default = '')

    used_km = models.IntegerField(default = 0)

    manufactured_year = models.IntegerField(validators=[MinValueValidator(1900), MaxValueValidator(timezone.now().year)], blank = True, null = True)

    def __str__(self):
        return "%s" % (self.entity_id)
    
    class Meta:
        verbose_name_plural = u"OptionedAutomobiles"
        verbose_name = u"OptionedAutomobile"

class AutomobileSerializer(serializers.ModelSerializer):   

    class Meta:
        model = Automobile
        fields = [ 'entity_address', 'used_km', 'manufactured_year']

class EntitySerializer(serializers.ModelSerializer):
    automobile = AutomobileSerializer(many=False)

    class Meta:
        model = Entity
        fields = ['id', 'customer', 'seller', 'entity_name', 
            'automobile']

    def create(self, validated_data):
        automobile_data = validated_data.pop('automobile')
        entity = Entity.objects.create(**validated_data)
        Automobile.objects.create(entity= entity, **automobile_data)
        return entity

class EntityViewSet(viewsets.ModelViewSet):
    serializer_class = EntitySerializer
    queryset = Entity.objects.all()
    permission_classes = (AllowAny,)

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


class AutomobileViewSet(viewsets.ModelViewSet):
    serializer_class = AutomobileSerializer
    queryset = Automobile.objects.all()
    permission_classes = (AllowAny,)
fetch(`http://127.0.0.1:8000/api/entities/`, {
    method: 'POST',
    headers: {
        'Authorization': `Token ${token}`,
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({seller:seller, 
        entity_name:entity_name, 
        automobile:{used_km:10}})
    })
    .then((res) => res.json())
    .then((data) => {
      console.log(data)
    })
    
    .then(res =>{
        Alert.alert("Yeni Entity eklendi.");
      })
    .catch(error=>console.log(error));

1 Ответ

0 голосов
/ 09 июля 2020

Я не мог понять, в чем проблема, но я решил проблему, изменив расположение функции создания. Теперь моя функция создания находится в разделе AutomobileSerializer, а не EntitySerializer. Конечно, я также кое-что меняю в этом, и на данный момент это решило, как я уже сказал.

...