اذهب إلى المحتوى

السؤال

نشر

السلام عليكم كيف أعمل nested serializers ب django rest framework 

Models

class Profile(models.Model):
    display_name = models.CharField(max_length=30)
    mobile = models.IntegerField()
    address = models.TextField()
    email = models.EmailField()
    dob = models.DateField()
   photo=models.FileField(upload_to='profile/',null=True,blank=True)
    status = models.IntegerField(default=1)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)


class Hobby(models.Model):   user=models.ForeignKey(Profile,on_delete=models.CASCADE,related_name='user_hobby',null=True,blank=True)
    name = models.CharField(max_length=30)
    description = models.TextField()
    status = models.IntegerField(default=1)
    created_at = models.DateTimeField(auto_now_add=True)
    updated_at = models.DateTimeField(auto_now=True)

 

Recommended Posts

  • 1
نشر

في مجلد التطبيق الخاص بك ، تقوم بإنشاء ملف serializer.py.

from rest_framework import serializers
from .models import Profile,Hobby

# ننشأ السيريالايز الخاص بهاذ المودل
class HobbySerializer(serializers.ModelSerializer):

    class Meta:
        model = Hobby
        fields = '__all__'
        
class ProfileSerializer(serializers.ModelSerializer):
    user_hobby = HobbySerializer(many=True)
	"""هل لاحظت أنني أتصل بفئة HobbySerializer الخاصة بي في ProfileSerializer. وهذا ما يسمى تداخل المتسلسلات. للتعامل مع طريقة POST ، سأتجاوز طريقة الإنشاء التي أحفظ بها بيانات الملف الشخصي ثم أحفظ هواية الشخص الذي تم إنشاء ملفه الشخصي. الآن دعنا ندعو ProfileSerializer لدينا في العرض."""
    class Meta:
        model = Profile
        fields = '__all__'

    def create(self, validated_data):
        user_hobby = validated_data.pop('user_hobby')
        profile_instance = Profile.objects.create(**validated_data)
        for hobby in user_hobby:
            Hobby.objects.create(user=profile_instance,**hobby)
        return profile_instance

ثم في ملف views :

from rest_framework import viewsets 
from .models import Profile
from .serializers import ProfileSerializer

# في هاذ الكلاس نقوم بالتحكم في عرض البيانات 
class ProfileViewset(viewsets.ModelViewSet):
  	#البيانات المراد عرضها
    queryset = Profile.objects.all()
    # شكل البيانات 
    serializer_class = ProfileSerializer
    # http  طرق استعلام
    http_method_names = ['get','post','retrieve','put','patch']

 

1_1-zDGXl0iHSW8JA4OG213A.png

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...