【问题标题】:How to POST to server with null Related Resource in TastyPie?如何在 TastyPie 中使用空相关资源发布到服务器?
【发布时间】:2015-06-15 21:01:31
【问题描述】:

我有以下两种型号。它们通过从 TextMission 表到 Mission 表的 OneToOneField 关系“任务”链接。

#Models.py
class Mission(models.Model):
    name = models.CharField(max_length = 40)

class TextMission(models.Model):
    mission = models.OneToOneField(Mission, related_name="text_mission", primary_key = True)

有时任务会有相应的 TextMission,但并非总是如此。当我在 shell 中创建/更新对象时,我能够让一切正常工作,但 TastyPie 仅在存在 TextMission 时正确处理请求(PUTing to /mission/{id}/)。当 text_mission=null 时,它会出错。

我的美味派配置:

class MissionResource(ModelResource):
    text_mission = fields.ToOneField('path.to.TextMissionResource', attribute='text_mission', related_name='mission', full = True, null = True)

class TextMissionResource(ModelResource):
    mission = fields.ToOneField(MissionResource, attribute='mission', related_name='text_mission')

当将以下 JSON 发送回服务器时(与我收到的完全相同的 JSON),我得到一个 ValueError:

失败

{ "name": "TEST", "id": "1", "text_mission": null, "resource_uri": "/api/web/mission/1/", } *** ValueError:无法分配无:“Mission.text_mission”不允许空值。

成功

{ “名称”:“TEST”,“id”:“1”,“text_mission”:{“id”:“1”,“resource_uri”:“/api/web/text_mission/1/”}, “资源_uri”: "/api/web/mission/1/", }

我的代码中是否有什么地方做错了,或者它不应该以这种方式工作。我在这里不知所措。

我正在运行 TastyPie 0.9.11。

【问题讨论】:

    标签: django tastypie


    【解决方案1】:

    我最终弄清楚了,这是一个非常愚蠢的错误。我只需要在 null = True 之外添加空白 = True:

    class MissionResource(ModelResource):
        text_mission = fields.ToOneField('path.to.TextMissionResource', attribute='text_mission', related_name='mission', full = True, blank = True, null = True)
    

    这让一切正常。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-27
      • 1970-01-01
      • 2019-06-16
      • 2012-07-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-24
      相关资源
      最近更新 更多