如何在序列化程序 Django 中获取外键值?
how to get foreign key value in serializer djago?
我正在尝试获取外键的值:
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
有人可以告诉我做错了什么吗?
字段的名称是 strings,而不是字段:
class cartItemSerializer(serializers.ModelSerializer):
# …
class Meta:
model=OrderItem
fields = <strong>('title', 'itemimage', 'price')</strong> # 🖘 strings
我正在尝试获取外键的值:
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
有人可以告诉我做错了什么吗?
字段的名称是 strings,而不是字段:
class cartItemSerializer(serializers.ModelSerializer):
# …
class Meta:
model=OrderItem
fields = <strong>('title', 'itemimage', 'price')</strong> # 🖘 strings