Django从Super class Serialize到Json

时间:2016-05-20 17:07:57

标签: json django serialization

我试图弄清楚是否有任何有效的方法可以从超类中序列化查询集。我的模特:

class CampaignContact(models.Model):
    campaign    = models.ForeignKey(Campaign, related_name="campaign_contacts", null=False)
    schedule_day    = models.DateField(null=True)
    schedule_time   = models.TimeField(null=True)
    completed   = models.BooleanField(default=False, null=False)

class CampaignContactCompany(CampaignContact):
    company = models.ForeignKey(Company, related_name='company_contacts', null=False)

class CampaignContactLead(CampaignContact):
    lead    = models.ForeignKey(Lead, related_name='lead_contacts' ,null=False)

我想创建一个包含所有广告系列联系人的json,可能是潜在客户'或公司'

1 个答案:

答案 0 :(得分:1)

Django有一个内置的序列化程序,记录here,但考虑到你的模型结构,它可能不会有效:

from django.core import serializers
data = serializers.serialize("json", CampaignContactCompany.objects.all())

我想你可以在两个表上运行它并组合这两个集但是它会引入一些开销。您还可以在CampaignContact中创建一个静态to_json方法,该方法从其他两个表中获取两个查询集,并将格式/组合成json。

也许你有理由按照你的方式对你的表进行建模,但根据观察结果看起来你会有3个表,一个从未使用过,两个只有一个公司和领域不同,这可能不太理想。通常,在将记录与多个对象相关联时,您只需将前导和公司字段放在CampaignContact表上,然后将它们设为空。要仅获取公司联系人,您可以查询company_contacts = CampaignContact.objects.filter(company__isnull=False).all()