【问题标题】:Django model operations with foreign key and double underscore带有外键和双下划线的 Django 模型操作
【发布时间】:2019-07-26 13:42:06
【问题描述】:

我是 Django 新手,只是想了解更多信息。 假设我有两个模型定义如下:

class ModelA(models.Model):
    Item1 = models.Charfield()
    description = models.Charfield()

class ModelB(models.Model):
    ItemTypes = models.CharField(ModelA, on_delete=models.CASCADE)

在尝试引用或使用模型时,您可以这样使用它们(仍然假设):

something = ModelB.objects.filter(ItemType__Item)

我的问题是双下划线__

我只是想知道:

  1. 后端的代码是什么样子的。

  2. 是否存在带三个下划线或单个下划线的有效语法?

【问题讨论】:

    标签: django django-models django-queryset


    【解决方案1】:

    我将代码重写为有效的 Django 模型:

    class ModelA(models.Model):
        item1 = models.CharField()
        description = models.CharField()
    
    class ModelB(models.Model):
        item_types = models.ForeignKey(ModelA, on_delete=models.CASCADE)
    
    things = ModelB.objects.filter(item_types__item1="the-item-name")
    

    第一季度。后端的代码是什么样子的。

    A1。生成的 SQL 查询是:

    SELECT b.*
    FROM ModelB b, ModelB a
    WHERE b.item_types_id = a.id
    AND a.item1 = 'the-item-name'
    

    item_types ForeignKey 列在数据库中创建为item_types_id。如果未指定主键,则所有 Django 数据库表都包含一个名为 id 的列。

    第二季度。是否存在包含三个下划线或单个下划线的有效语法?

    A2。没有三重下划线。单个下划线可用于列名。

    【讨论】:

      猜你喜欢
      • 2011-10-19
      • 2016-12-03
      • 2012-12-14
      • 1970-01-01
      • 2014-06-09
      • 2013-02-03
      • 2020-11-13
      • 2019-12-29
      • 1970-01-01
      相关资源
      最近更新 更多