在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。
答案 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