मेरे पास निम्नलिखित मॉडल हैं:

class Card(models.Model):
    thing = models.CharField(max_length=50, blank=True, null = True, )

class Responsibility(models.Model):
    name = models.CharField(max_length=50, blank=True, null=True, )
    card = models.ForeignKey(Card, related_name='responsibilities', blank=True, null=True, on_delete=models.CASCADE)

class Collaborator(models.Model):
    name = models.CharField(max_length=50, blank=True, null=True, )
    card = models.ForeignKey(Card, related_name='collaborators', blank=True, null=True, on_delete=models.CASCADE)

और मेरे धारावाहिक:

class CollaboratorSerializer(serializers.ModelSerializer):

    class Meta:
        model = Collaborator
        fields = '__all__'

class ResponsibilitySerializer(serializers.ModelSerializer):
    class Meta:
        model = Responsibility
        fields = '__all__'      


class CardSerializer(serializers.ModelSerializer):

    responsibilities = ResponsibilitySerializer(many=True,)
    collaborators = CollaboratorSerializer(many=True,)

    class Meta:
        model = Card
        fields = '__all__'

    def create(self, validated_data):
        responsibilities_data = validated_data.pop('responsibilities')
        collaborators_data = validated_data.pop('collaborators')

        card = Card.objects.create(**validated_data)
        for responsibility_data in responsibilities_data:
            Responsibility.objects.create(card=card, **responsibility_data)
        for collaborator_data in collaborators_data:
            Collaborator.objects.create(card=card, **collaborator_data)
        return card

बनाएं और प्राप्त करें सफल हैं, मुझे यकीन नहीं है कि कार्ड के लिए अद्यतन() विधि को कैसे कार्यान्वित किया जाए। नमूना अनुरोध। डेटा निम्न जैसा दिखता है:

{u'collaborators': [{u'id': 8, u'card': 12, u'name': u''}, {u'name': u''}, {u'name': u''}], u'responsibilities': [{u'name': u'Name'}, {u'name': u'Age'}, {u'name': u'Address'}], u'id': 12, u'thing': u'Reader'}

मेरी अद्यतन पद्धति में, मैं पहले उस विशिष्ट कार्ड की सभी जिम्मेदारियों और सहयोगियों को हटाना चाहता हूं, और फिर प्राप्त डेटा से ताजा बनाना चाहता हूं।

मेरे पास अब तक क्या है:

def update(self, instance, validated_data):
    instance.responsibilities.all().delete()
    instance.collaborators.all().delete()
    .. NOT SURE ABOUT THIS PART ..
0
Thinker 8 मई 2018, 20:59

1 उत्तर

यह लिंक https:// github.com/encode/django-rest-framework/blob/master/docs/topics/writable-nested-serializers.md आपकी मदद कर सकता है। यह पैकेज अद्यतन के लिए बहुत अच्छा है और अधिलेखित विधियों के बिना धारावाहिक में संबंधित फ़ील्ड बनाएं। मुझे आशा है कि यह आपके लिए उपयोगी होगा

0
Andrey Berenda 9 मई 2018, 03:59