我有一个看起来大致像这样的Django模型
class Equipment(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
name = models.CharField(max_length=100)
class Tag(models.Model):
id = models.UUIDField(default=uuid.uuid4, unique=True, primary_key=True)
tag_type = models.ForeignKey(TagType)
equipment = models.ForeignKey(Equipment)
name = models.CharField(max_length=100)
class Meta:
db_table = "tag"
ordering = ["tag_type__name", "name"]
unique_together = (("tag_type", "equipment"),)
class TagType(models.Model):
id = models.PositiveSmallIntegerField(primary_key=True)
name = models.CharField(max_length=100, unique=True)
class Meta:
db_table = "tag_type"
ordering = ["name"]
TagTypes的名称包括“Equipment”和“Load”
“设备”标签可以是“HVAC”或“照明”
“加载”标签可以是“可变”或“天气”
我希望能够过滤到具有标签名称的某个tag_type的设备。
如果我希望设备的HVAC
标签带有tag_type Equipment
,则可以使用以下设备:
Equipment.objects.filter(tag__tag_type__name="Equipment", tag__name="HVAC")
但是,我认为在这种情况下,tag_type名称和标签不一定来自同一个标签。 AKA tag__tag_type__name="Equipment"
和tag__name="HVAC"
可能没有使用正确的值。
由于可能有许多不同类型的标签具有不同的名称,我想确保我过滤到正确的标签。我有办法管理这个吗?
答案 0 :(得分:1)
经过一些进一步测试后,通过将int countNotLessThan(int[] array, int x)
{
/* simplified, inlined classical binary search goes here */
if (array[mid] != x) {
return array.length - low;
}
else { // array[mid] == x
do {
mid = mid - 1;
} while (array[mid] == x);
return array.length - mid + 1;
}
}
和int countGreaterThan(int[] array, int x)
{
/* simplified, inlined classical binary search goes here */
if (array[mid] != x) {
return array.length - low;
}
else { // array[mid] == x
do {
mid = mid + 1;
} while (array[mid] == x);
return array.length - mid - 1;
}
}
链接在一起可确保它确实在查看相同的标记。我的担忧没有根据