我正在研究Django中的CRUD API,我需要序列化两个表中的外键模型。这个模型在两个一对多关系上有很多方面,我真的没有看到在这个模型中指定关系的其他方式(我是python和Django的新手,我正在使用Django-Rest-Framework创建API)DRF - 使用多个外键序列化模型
所以,我有两个问题:
1 - Is it a good Idea to have multiple foreign keys in my model or I should refractor my relationships some other way?
2 - If it is fine to have multiple foreign keys in a single model, how do I serialize the model to return the proper JSON?
我的模型是这样的(多带几个字段):
class DataSource(models.Model):
datasource_name = models.CharField(max_length=50, unique=True)
datasource_description = models.CharField(max_length=100)
...
class Campaign(models.Model):
name = models.CharField(max_length=200)
subject = models.CharField(max_length=200)
sender = models.EmailField(max_length=200)
...
class CampaignDeliveries(models.Model):
campaign_id = models.ForeignKey(Campaign)
datasource_id = models.ForeignKey(DataSource)
delivery_reference_id = models.CharField(max_length=200, primary_key=True)
date_sent = models.DateTimeField()
交货记录提供了交货的活动以及为该交货选择的数据源。
数据必须以格式返回,如:
{
campaign_id: 001,
datasource_id: 002,
datasource_name: "Data Source Name",
campaign_name: "Campaign Name"
setup_date:"<Setup Date>",
delivery_history:[{
delivery_reference_id:DL_001,
sender : "[email protected]",
subject : "Subject",
sent_on : "<Date>"
},
{
delivery_reference_id:DL_002,
sender : "[email protected]",
subject : "Subject",
sent_on : "<Date>"
},
{
delivery_reference_id:DL_003,
sender : "[email protected]",
subject : "Subject",
sent_on : "<Date>"
}
....
]
}
的datasource_id
和campaign_id
场均Django在该记录中的默认的ID被创造而delivery_reference_id
是定制的ID被分配而同时创建交付记录。
我希望我已经说清楚了。但是,请问是否有不清楚的地方。
试试这个:http://www.django-rest-framework.org/api-guide/relations/#nested-relationships – Amar
你在查询什么来获取数据。您可以分享填充的模型delivery_history –
您使用DRF的框架是什么? – marin