【问题标题】:how to get foreign key value in serializer djago?如何在序列化程序 django 中获取外键值?
【发布时间】:2022-01-22 11:32:33
【问题描述】:

我正在尝试获取外键的值:

class OrderItem(models.Model):
   user = models.ForeignKey(settings.AUTH_USER_MODEL,
                         on_delete=models.CASCADE)
   ordered = models.BooleanField(default=False)
   item = models.ForeignKey(Item, on_delete=models.CASCADE)
   quantity = models.IntegerField(default=1)

这是物品型号:

class Item(models.Model):
   title = models.CharField(max_length=100)
   price = models.FloatField()
   bargainprice = models.FloatField(default=0)
   discount_price = models.FloatField(blank=True, null=True)
   category = models.CharField(choices=CATEGORY_CHOICES, max_length=2)
   label = models.CharField(choices=LABEL_CHOICES, max_length=1)
   slug = models.SlugField()
   description = models.TextField()
   image = models.ImageField()

在我的 serializers.py 中:

class cartItemSerializer(serializers.ModelSerializer):
   title = serializers.CharField(source='item.title', read_only=True)
   itemimage = serializers.ImageField(source='item.image', read_only=True)
   price = serializers.FloatField(source='item.price', read_only=True)

   class Meta:
      model=OrderItem
      fields = (title, itemimage, price)

当我尝试这样做时,我得到一个错误:

name 'title' is not defined

谁能告诉我我做错了什么?

【问题讨论】:

    标签: django-models django-rest-framework


    【解决方案1】:

    字段的名称是字符串,而不是字段:

    class cartItemSerializer(serializers.ModelSerializer):
        # …
        
        class Meta:
            model=OrderItem
            fields = ('title', 'itemimage', 'price')  # ? strings

    【讨论】:

      猜你喜欢
      • 2021-02-13
      • 2021-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-20
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多