Django-访问外键值以保存到字典

时间:2019-10-21 15:35:34

标签: django django-models

在Django中,我想根据还包含外键值的模型值创建一个字典。

例如,我有2个模型:

-models.py-

class Item(models.Model):
    item_name = models.CharField(max_length=255)
    item_description = models.CharField(max_length=255)

class Inventory(models.Model):
    inventory_name = models.CharField(max_length=255)
    inventory_date = models.DateTimeField(default=timezone.now)
    inventory_item = models.ForeignKey(Item, on_delete=models.DO_NOTHING)

(不是最佳的变量名示例,因为它可能存在多对多关系,但您明白了)

在我的网址中,我需要一个显示主键的路径,因为我将基于URL的pk进行其他一些功能。

-urls.py-

urlpatterns = [
    path('details/<int:pk>/', views.GenerateDetails, name='details'),
]

现在,这是我遇到的问题。

我正在尝试从库存模型创建一个字典,该字典也将具有Item的ForeignKey值。

-views.py-

class GenerateDetails(View):

    def get(self, request, *args, **kwargs):

        inventory_data = Inventory.objects.get(pk=self.kwargs.get('pk'))

        # Create dictionary from selected contract_data
        inventory_data_dict = model_to_dict(inventory_data)

        ...

        return response

在此解决方案中,词典保存的唯一ForeingKey值就是Item__id,仅此而已。

我希望字典保存库存的所有数据以及Item__name和Item__description。

1 个答案:

答案 0 :(得分:0)

Inventory.objects.filter(self.kwargs.get('pk')).values('inventory_name', 'inventory_date', 'inventory_item__item_name', 'inventory_item__ item_description').first()

并且我建议您对名称之类的字段使用较短的名称,而不要使用item_name和item_description,而只使用物料而不是库存物料,您已经知道物料是FK

相关问题