跨多个模型关系的 Django 查询
Django Query across multiple model relationships
我正在尝试查询按组过滤的 ActivityPartsModel 中的一组实例。当我尝试 运行 以下内容时。我留下了一个属性错误:“'QuerySet' 对象没有属性 'activity'”
activities = GroupActivityModel.objects.filter(group=id)
parts = ActivityPartModel.objects.filter(activity=activities.activity.all())
print(parts)
我将如何使用 GroupModel 过滤 ActivityPartModel ID/instance
class ActivityModel(models.Model):
activityName = models.CharField(max_length=100)
description = models.CharField(max_length=200)
workCenter = models.ForeignKey(Group, on_delete=models.PROTECT)
history = HistoricalRecords()
class ActivityPartModel(models.Model):
activity = models.ForeignKey(ActivityModel, on_delete=models.PROTECT)
part = models.ForeignKey(PartModel, on_delete=models.PROTECT)
quantity = models.IntegerField(default=1)
increment = models.BooleanField(default=False) # TRUE/FALSE used to represent parts ActivityPartModel/produced
order = models.IntegerField(blank=False, default=100_000)
location = models.TextField(max_length=50, null=True)
history = HistoricalRecords()
class GroupModel(models.Model):
groupName = models.CharField(max_length=50)
class GroupActivityModel(models.Model):
group = models.ForeignKey(GroupModel, on_delete=models.PROTECT)
activity = models.ForeignKey(ActivityModel, on_delete=models.PROTECT)
order = models.IntegerField(blank=False, default=100_000)
groupName = models.CharField(max_length=50)
试试这个:
activities = GroupActivityModel.objects.filter(group=id).values_list('activity', flat=True)
parts = ActivityPartModel.objects.filter(activity__in=activities)
print(parts)
因为 activity 是模型对象的属性,您不能从查询集对象调用模型对象的属性(我的意思是行 activity=activities.activity.all()
)。这就是为什么您会看到 QuerySet' object has no attribute 'activity'"
.
我正在尝试查询按组过滤的 ActivityPartsModel 中的一组实例。当我尝试 运行 以下内容时。我留下了一个属性错误:“'QuerySet' 对象没有属性 'activity'”
activities = GroupActivityModel.objects.filter(group=id)
parts = ActivityPartModel.objects.filter(activity=activities.activity.all())
print(parts)
我将如何使用 GroupModel 过滤 ActivityPartModel ID/instance
class ActivityModel(models.Model):
activityName = models.CharField(max_length=100)
description = models.CharField(max_length=200)
workCenter = models.ForeignKey(Group, on_delete=models.PROTECT)
history = HistoricalRecords()
class ActivityPartModel(models.Model):
activity = models.ForeignKey(ActivityModel, on_delete=models.PROTECT)
part = models.ForeignKey(PartModel, on_delete=models.PROTECT)
quantity = models.IntegerField(default=1)
increment = models.BooleanField(default=False) # TRUE/FALSE used to represent parts ActivityPartModel/produced
order = models.IntegerField(blank=False, default=100_000)
location = models.TextField(max_length=50, null=True)
history = HistoricalRecords()
class GroupModel(models.Model):
groupName = models.CharField(max_length=50)
class GroupActivityModel(models.Model):
group = models.ForeignKey(GroupModel, on_delete=models.PROTECT)
activity = models.ForeignKey(ActivityModel, on_delete=models.PROTECT)
order = models.IntegerField(blank=False, default=100_000)
groupName = models.CharField(max_length=50)
试试这个:
activities = GroupActivityModel.objects.filter(group=id).values_list('activity', flat=True)
parts = ActivityPartModel.objects.filter(activity__in=activities)
print(parts)
因为 activity 是模型对象的属性,您不能从查询集对象调用模型对象的属性(我的意思是行 activity=activities.activity.all()
)。这就是为什么您会看到 QuerySet' object has no attribute 'activity'"
.