ModelViewset ใน django

0

คำถาม

ฉัน newbie ของ Django ที่เหลือ-เฟรมเวิร์ก. ฉันใช้ Modelviewset เพื่อสร้างรูปแบบ api สำหรับโครงการ ฉันต้องการจะเอารายชื่อของสิ่งที่ไม่โดนหมายเลขและฉันใช้ lookup_field ต้องทำอย่างนั้น แต่มันเป็นแค่กลับมา 1 วัตถุ. ยังไงฉันสามารถกำหนดเองมันต้องกลับมา multible วัตถุ?

นี่คือของฉันนางแบบ

class Rating(models.Model):
    dayandtime = models.DateTimeField(auto_now_add=True)
    ratingpoint = models.IntegerField(null=True,blank=True)
    ratingcomment = models.TextField(null=True, blank=True)
    img = models.ImageField(upload_to='static',default=None)
    product = models.ForeignKey(Product,on_delete=models.CASCADE)
    user = models.ForeignKey(User,on_delete=models.CASCADE)

นี่คือของมุมมอง

class RatingViewSet(viewsets.ModelViewSet):
    queryset = Rating.objects.all()
    serializer_class = RatingSerializer
    lookup_field = "product"

นี่คือของฉัน Comment

class RatingSerializer(ModelSerializer):
    class Meta:
        model=Rating
        fields=["id","dayandtime","ratingpoint", "ratingcomment","img","product","user"]
        lookup_field = "product" 

ได้โปรดช่วยฉัน sovle ปัญหานี้ ขอบคุณมาก

1

คำตอบที่ดีที่สุด

1

คุณต้องการจะใช้ตัวกรองบนรูปแบบ api และกลับมาหลายวัตถุ. แต่ lookup_field คือ ใช้สำหรับการแสดงวัตถุค้นหาของปัจเจกบุคคลตัวอย่าโห. มีหลายทางที่จะบรรลุเป้าหมายของคุณแต่ฉันจะแสดงให้คุณ ตัวกรองโดยการพารามิเตอร์.

คุณสามารถยกเลิก get_queryset() ข้อตกลงกับที่อยู่ url เช่น http://yourdoamin.com/api/ratings?product=1 (นี่เราสันนิษฐานว่าคุณต้องการให้ตัวกรองโดยหมายเลขผลิตภัณฑ์).

class RatingViewSet(viewsets.ModelViewSet):
    serializer_class = RatingSerializer

    def get_queryset(self):
        queryset = Rating.objects.all()
        product= self.request.query_params.get('product')
        if product not None:
            queryset = queryset.filter(product_id=product)
        return queryset

แน่นอนคุณสามารถเพิ่มมาก if/elif/else บล็อกที่จะจัดการลากับการค้นหาตัวแปรอื่นแล้ว

คุณยังสามารถใช้วิธีการคล้ายกัน: ค SearchFilter เรียน เพื่อให้บรรลุเป้าหมายเดียวกัน.

เกี่ยวกับข้อมูลเพิ่มเติมขที่ DRF กำลังกรองเอกสารคู่มือ@info:shell

2021-11-24 10:00:31

ในภาษาอื่นๆ

หน้านี้อยู่ในภาษาอื่นๆ

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

ดังอยู่ในนี้หมวดหมู่

ดังคำถามอยู่ในนี้หมวดหมู่