【问题标题】:Django | Tastypie: Create record with ForeignKey__id姜戈 | Tastypie:使用 ForeignKey__id 创建记录
【发布时间】:2016-09-30 03:29:03
【问题描述】:
class D(BaseRsrc):
    a1 = fields.ForeignKey(D1Resource, 'a1', full=True, blank=True)
    a2 = fields.ForeignKey(D2Resource, 'a2', full=True, blank=True)
    a3 = fields.ForeignKey(D3Resource, 'a3', full=True, blank=True)
    class Meta(BaseRsrc.Meta):
        resource_name = 'sample_endpoint'
        queryset = M.objects.all()
        include_resource_uri = True

我发送的 POST 请求是:

{"data":
    {"a1_id":110,"a2_id":10802,"a3_id":"10804"}
}

我得到了错误

{
 "D": 
    { 
      "a1": ["This field cannot be null."], 
      "a2": ["This field cannot be null."], 
      "a3": ["This field cannot be null."]}
}

有没有一种美味的方法可以正确地做到这一点?数据库只需要外键 ID。这就是我要发送的。我需要覆盖每个水合物吗?这听起来效率很低。

【问题讨论】:

    标签: django django-models foreign-key-relationship tastypie


    【解决方案1】:

    不要让数据库误导您。 Tastypie 直接放在 Django 的 ORM 上。

    因此,将您的外键视为一个对象,而不仅仅是 id 列。 您应该改用资源表示路径:

    {"a1": "/path/to/a1resource/110", "a2": "/path/to/a2resource/10802", "a3": "/path/to/a3resource/10804"}
    

    您只需在 sweetpie 的外键中使用资源 uri 表示。

    【讨论】:

      猜你喜欢
      • 2020-08-17
      • 2018-02-11
      • 2013-02-10
      • 2010-11-11
      • 1970-01-01
      • 2011-01-27
      • 2016-01-06
      • 2014-06-02
      • 1970-01-01
      相关资源
      最近更新 更多