【发布时间】:2018-01-24 11:42:39
【问题描述】:
我正在使用 Django 框架。我有两个模型:Component 和 ComponentProperty。
class Component(models.Model):
name = models.CharField(unique=True, max_length=255)
component_properties = models.ManyToManyField(ComponentProperty)
class ComponentProperty(models.Model):
label = models.CharField(unique=True, max_length=255)
component_type = models.CharField(max_length=255)
还有序列化器:
class ComponentSerializer(serializers.ModelSerializer):
class Meta:
model = Component
fields = ('name', 'component_properties')
depth = 1
class ComponentPropertySerializer(serializers.ModelSerializer):
class Meta:
model = ComponentProperty
fields = ('label', 'component_type')
我正在尝试使用固定装置加载数据。我编写了如下所示的固定文件:
[
{
"pk":1,
"model":"api.componentproperty",
"fields":{
"label":"label",
"component_type":"text"
}
},
{
"pk":2,
"model":"api.componentproperty",
"fields":{
"label":"description",
"component_type":"text",
}
},
{
"pk":1,
"model":"api.component",
"fields":{
"name":"text",
"component_properties":[
1,
2
]
}
}
]
没问题!但我有 20 个装置要加载。我想让fixture(例如component.json)看起来像下面这样:
[
{
"pk":null,
"model":"api.component",
"fields":{
"name":"text",
"component_properties":[
{
"pk":null,
"model":"api.componentproperty",
"fields":{
"label":"label",
"component_type":"text"
}
},
{
"pk":null,
"model":"api.componentproperty",
"fields":{
"label":"description",
"component_type":"text",
}
}
]
}
}
]
锦上添花的必须是指定主键的固定装置,如here。拜托,谁能帮我写这些没有 pk 和上述关系的夹具?
【问题讨论】:
-
如果省略
pk或将其设置为null会发生什么? -
django.core.serializers.base.DeserializationError: 安装夹具组件时出现问题.json': ["'{'pk': None, 'model': 'api.componentproperty', 'fields': {'component_type': 'text', 'default_value': 'string', 'data': [], 'label': 'label'}}' 值必须是整数。"]: (api.component:pk=无)field_value 为 '{'pk': None, 'model': 'api.componentproperty', 'fields': {'component_type': 'text', 'default_value': 'string', 'data': [], '标签':'标签'}}'
-
我正在尝试让夹具文件看起来像:component.json
-
您可以将您的
serializers.py添加到问题中吗? -
@wencakisa 完成!
标签: django django-models django-rest-framework django-serializer django-fixtures