【问题标题】:Mapping objects into CoreData with multiple foreign keys, without passing complete object, just FK ID使用多个外键将对象映射到CoreData,无需传递完整对象,只需FK ID
【发布时间】:2013-06-30 12:00:13
【问题描述】:

我在 Django 中有以下模型:

class Equipment(models.Model):
    model = models.ForeignKey(EquipmentModel)
    description = models.CharField(max_length=128, blank=True,verbose_name=_("Description"))
    serial = models.CharField(max_length=64, blank=False, unique=True,
    production_line = models.ForeignKey(ProductionLine, null=True, blank=True, verbose_name=_("Production line"))
    plant = models.ForeignKey(Plant, verbose_name=_("Plant"))

现在,我计划通过 REST 部署所有“生产线”及其包含的设备的列表。但是,每个设备都有一个“设备模型”,并且每个“设备模型”都有另一个指向“制造商”的外键。

如果我列出所有生产线及其设备,我是否有,对于每个设备也给出完整的“EquipmentModel”对象,或者我能以某种方式只传递该模型仍然通过 RestKIT 映射在 CoreData 中建立关系?然后我会获取所有制造商及其设备模型。这比传递每个设备、它们各自的型号和制造商要快得多,因为它们将是型号和制造商的大量重复数据。因此,我的问题是如何通过传递 FK ID 而不是整个相关对象来映射与 RestKIT 和 CoreData 的 FK 关系?

不过,我仍然希望有这样的模型:

@property (nonatomic, retain) NSString * serial;
@property (nonatomic, retain) PokaEquipmentModel *model;
@property (nonatomic, retain) PokaPlant *plant;
@property (nonatomic, retain) PokaProductionLine *productionLine;

【问题讨论】:

    标签: django rest restkit tastypie


    【解决方案1】:

    您可以使用外键通过 RestKit 建立连接。它只需要提供要连接的对象的身份。如果两个对象都在同一个响应中,那么这可能在 JSON 中,或者如果第二个对象是按需下载的,则它可能在 JSON 中,或者在 URL 路径中。

    【讨论】:

    • 您需要展示您的 JSON 以及创建对象所必须的基本映射。我不能把这一切都编出来,让你觉得有意义(如果它不是一个完整的教程)。
    • 我在这里创建了这个 pastebin。 pastebin.com/47mgSt75 基本上,现在我在 JSON 中传递完整的对象,但速度很慢。 (即:每个设备也返回其完整的 EquipmentModel,它返回其完整的制造商模型。)我将其更改为这次仅传递 _id,稍后我将获取它们!
    • 所以,我建议先更改您的 JSON,以便它发送多个顶级项目,即 model overviews(只是 ID 和标题)和设备。然后我们可以查看映射以将其读入并连接。然后查看下载部分模型实体实例的详细信息。
    • 那么,生产线 JSON 结构需要返回模型,其中,设备数组?这对于我目前在 Django 中的结构来说会很困难.... [对不起,很困惑:(]
    • 不,我会删除所有的嵌套(这只是一个建议)并分别返回每组信息。我实际上在服务器上有多个不同的调用可用,一些返回部分数据(身份和标题),一些返回指定项目的详细信息。也可以同时返回多个项目的概览。其想法是让您轻松了解项目和关系的概览,而无需下载所有内容的所有数据。这使您可以快速搜索,然后填写详细信息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-24
    • 2021-04-28
    • 2023-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-12-03
    • 1970-01-01
    相关资源
    最近更新 更多