我正在尝试创建一个通用模型,该模型将包含产品名称,其选项和价格。这是我要发送的示例json。
{
"product": "jacket",
"options": {
"color": ["purple"],
"size": ["s", "m", "l"],
(I want the ability to add unlimited strings here)
},
"price": 234
}
我的问题是我需要归纳颜色和尺寸。 IE,选项应包含CharField
,option_name
,可以重复使用具有唯一值的不同选项名称来重复这些选项。有没有办法使用更多数据表或内置的Django REST功能来做到这一点?
答案 0 :(得分:0)
也许您应该考虑将Option
做成一个单独的表,并通过外键使其与您的Product
表相关。换句话说,一个产品可以有很多选择。
class Product(models.Model):
product_name = models.CharField(max_length=100)
price = models.IntegerField()
class Option(models.Model):
color = models.CharField(max_length=100)
size = models.CharField(max_length=100)
product = models.ForeignKey(Product) # an option is associated with a product
因此,现在您不需要“通用模型”。 Product
是您的主要模型。然后,您可以按以下方式定义序列化器:
class OptionSerializer(serializers.ModelSerializer):
class Meta:
model = Option
fields = ('color', 'size')
class ProductSerializer(serializers.ModelSerializer):
options = OptionSerializer(source='option_set', many=True)
class Meta:
model = Product
fields = ('product_name', 'price', 'options')
现在,当您检索Product
实例时,它具有以下信息:
var product = {
"product_name": "jacket",
"price": 123,
"options": [
{"color": "purple", "size": "l"},
{"color": "red", "size": "s"},
...
]
}
这确实会更改您计划的json,但具有有关产品可能选项的所有信息。