首页 > 解决方案 > 在 django 中获取相同 id 的多个条目

问题描述

我正在尝试在主键的帮助下进行查询并检索该特定用户下列出的所有数据。我正在获取数据,但它仅包含一个数据,但我应该得到三个。

以下是观点:

def eachlead(request, pk):
    # print(pk)
    lead = Lead.objects.get(id=pk)
    leadinfo = LeadDetail.objects.filter(id=pk)
    print(list(leadinfo))
    return render(request, "onelead.html", {'lead': lead, 'leadinfo': leadinfo})

这里是模型:

class LeadDetail(models.Model):
    Lead = models.ForeignKey(Lead, on_delete=models.CASCADE)
    files = models.FileField(blank=True, upload_to='media')
    tasks = models.TextField(max_length=1000)

    def __str__(self):
        return self.Lead.first_name 

class Lead(models.Model):
    lead_status = (
        ('Potential', 'Potential'),
        ('Prospect', 'Prospect'),
        ('Negotiation', 'Negotiation'),
        ('Converted', 'Converted'),
        ('Failed', 'Failed')
    )

    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    age = models.IntegerField(default=0)
    city = models.CharField(max_length=25, null=True)
    country = models.CharField(max_length=30, null=True)
    email = models.EmailField(max_length=50, null=True)
    agent = models.ForeignKey('Agent', on_delete=models.CASCADE, null=True)
    status = models.CharField(max_length=15, choices=lead_status, null=True)
    avatar = models.ImageField(null=True, upload_to='media')

    def __str__(self):
        return self.first_name

我得到的响应是[<LeadDetail: Test1111>]或者[{'id': 1, 'Lead_id': 1, 'files': 'media/dummy.pdf', 'tasks': 'Meeting at 19:00 Friday'}]但是这个 ID 下有 3 个任务:

在此处输入图像描述

标签: pythondjangodatabasedjango-modelsdjango-views

解决方案


因为您试图LeadDetail从查询中获取,但 pk 只有一个值。id您必须使用 过滤,而不是直接通过过滤lead

def eachlead(request, pk):
    # print(pk)
    lead = Lead.objects.get(id=pk)
    leadinfo = LeadDetail.objects.filter(Lead=lead)

或者,您也可以这样做:

def eachlead(request, pk):
    # print(pk)
    lead = Lead.objects.get(id=pk)
    leadinfo = LeadDetail.objects.filter(Lead__id=pk)

参考django 查询集。


推荐阅读