Django REST API从相关模型

时间:2017-11-02 13:35:46

标签: django django-rest-framework

使用以下型号:

class Tabs(models.Model):
    name = CharField(max_length=64)

    def __str__(self):
        return self.name

class DataLink(models.Model):
    data_id = models.ForeignKey(...)
    tabs_id = models.ForeignKey(Tabs, ...)

    def __str__(self):
        return "{} {}".format(self.data_id, self.tabs_id)
DataLink:                               Tabs:
  id  |  data_id  |  tabs_id       |      id  |  name  
------+-----------+-----------     |    ------+--------
  1   |     1     |    1           |      1   |  tab1
  2   |     1     |    2           |      2   |  tab2
  3   |     1     |    3           |      3   |  tab3
  4   |     2     |    1           |      4   |  tab4
  5   |     2     |    4           |      5   |  tab5

我需要在两个模型/表之间链接数据,这样对于给定的data_id我可以使用Tabs表和tabs_id返回相应选项卡的列表。

例如:

data_id = 1会返回['tab1', 'tab2', 'tab3']

data_id = 2会返回['tab1', 'tab4']

这可能吗?怎么样?这是个坏主意吗?

1 个答案:

答案 0 :(得分:0)

如果你只想要一个像给定数据id那样的扁平列表,你应该使用值列表和你想要的键值以及flat = True kwarg。

它会看起来像这样。在你的shell中试试吧。 https://docs.djangoproject.com/en/1.9/ref/models/querysets/#values-list

DataLink.objects.filter(data_id=1).values_list('tabs_id',flat=True)

另外,您使用django rest 标记了该问题,但没有其余的上下文。这似乎是一个Django问题,除非你指定