【发布时间】:2020-09-10 00:47:45
【问题描述】:
Noob Django ORM 问题在这里:
我有一个类似的模型:
class Company(models.Model):
id = models.PositiveIntegerField(null=False, blank=False, primary_key=True)
name = models.CharField(max_length=255, null=True, blank=True, default="")
class Audited(models.Model):
company = models.ForeignKey(
Company,
null=False,
blank=False,
on_delete=models.CASCADE,
related_name="logs"
)
city = models.CharField(null=False, blank=False, max_length=255)
我一直在为这个问题摸不着头脑,我不知道如何解决它。
给定一个城市,我需要没有在那个城市被审计的公司,所以基本上是没有在那个城市审计的记录的公司。
因此,例如,如果城市是纽约,并且没有在像 Oracle 这样的公司和纽约这样的公司进行审计的记录,我会收到 Oracle。
这让我很困惑,因为 ORM 似乎是为积极关系而设计的,例如“表 A 中的项目在表 B 上有记录”,而这恰恰相反。 任何线索我该怎么做?
【问题讨论】:
-
我假设可以有多个个副本?
-
是的,可以有多家公司,但我总是需要第一个,因为之后我会将行添加到 Audited(例如,Oracle-New York),所以下次我要求下一家在纽约审计的公司,甲骨文将被忽略。表满后(例如,所有公司都有纽约的记录),我必须使用其他逻辑(公司在那个日期最旧的城市进行审计)
-
您应该从 Company 模型中删除 id 字段,因为 django 会自动创建一个。
标签: django django-models orm