django - Django:通过比较第二个 OneToOne 相关模型的属性来获取第一个模型的对象
问题描述
我有两个模型,用户和卡。一位用户拥有一张卡。如果 Card 模型的“card_written”在视图中为 False,我需要获取 User 的对象。
class User(model.Model):
phone = PhoneNumberField(null=False, blank=False, unique=True)
email = models.EmailField(verbose_name="email", max_length=60, unique=True)
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
class Card(models.Model):
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE)
card_number = models.CharField(max_length=200)
card_written = models.BooleanField(default=False, null=False)
card_write_date = models.DateTimeField(null=True, blank=True)
card_delivered = models.BooleanField(default=False, null=False)
解决方案
您可以通过双下划线分隔相关字段,在 Django 中非常轻松地查询相关模型。
像这样的查询应该适合您:
User.objects.filter(card__card_written=False)
这里 card 是相关名称,因为如果您希望它是其他需要在 Card 模型中指定的名称,则您尚未在 Card 模型中指定它:
user = models.OneToOneField(User, null=True, blank=True, on_delete=models.CASCADE, related_name='something_else')
推荐阅读
- pandas - 如果满足特定条件,如何更新数据框列下的所有值?
- excel - Excel VBA 用户窗体中的 .width 属性没有影响
- excel - 同一宏在一个 Excel 电子表格中工作,但在另一个电子表格中不工作(曾经工作)
- typo3 - tx_seo:将站点地图划分为多个
- python - Django Admin更改列表隐藏用户的选择选项之一
- mapbox - Mapbox:如何使用 MGL_MATCH 表达式设置图层的填充颜色
- javascript - 使用 Cypress 连接到 SQL DB
- apache-spark - 无法使用 spark-atlas-connector 设置 spark 应用程序
- c++ - 在结构之间复制 char 数据
- python - 即使我能够安装其他库,安装 pyinstaller 时出现 SSL 错误