【问题标题】:Django Query across multiple model relationships跨多个模型关系的 Django Query
【发布时间】:2021-03-26 16:35:33
【问题描述】:

我正在尝试查询 ActivityPartsModel 中按组过滤的一组实例。当我尝试运行以下内容时。我留下一个属性错误:“'QuerySet' 对象没有属性'activity'”

activities = GroupActivityModel.objects.filter(group=id)
parts = ActivityPartModel.objects.filter(activity=activities.activity.all())
print(parts)

我将如何使用 GroupModel ID/实例过滤 ActivityPartModel

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)

【问题讨论】:

    标签: django django-models filter django-queryset relationship


    【解决方案1】:

    试试这个:

    activities = GroupActivityModel.objects.filter(group=id).values_list('activity', flat=True)
    parts = ActivityPartModel.objects.filter(activity__in=activities)
    print(parts)
    

    因为活动是模型对象的一个​​属性,你不能从查询集对象中调用模型对象的属性(我的意思是activity=activities.activity.all()这一行)。这就是您看到QuerySet' object has no attribute 'activity'" 的原因。

    【讨论】:

    • 做到了。谢谢。
    猜你喜欢
    • 2015-07-31
    • 2014-01-22
    • 2023-01-26
    • 2016-11-13
    • 2022-08-05
    • 2019-05-09
    • 2018-01-04
    • 2012-12-04
    • 2011-10-22
    相关资源
    最近更新 更多