【问题标题】:Retrieve record from two Django models in single template从单个模板中的两个 Django 模型中检索记录
【发布时间】:2020-02-03 13:50:01
【问题描述】:

我正在尝试从两个 Django 模型中检索记录。检索应该像第一个模型的所有记录一样,然后根据第一个模型的用户名的用户名来自第二个模型的记录。

型号是:

class Nodes(models.Model):
    user = models.OneToOneField(User, on_delete = models.CASCADE, default=1)
    node_name = models.CharField(max_length=50)
    node_mob = models.PositiveIntegerField()
    node_image = models.ImageField(upload_to='nodes_pics/', blank=True)

    def __str__(self):
        return self.user.username

class DocchainUser(models.Model):
    docchainuser = models.OneToOneField(User, on_delete = models.CASCADE)
    address = models.CharField(max_length=64,unique=True)   

    def __str__(self):
        return self.address

视图是:

def universityUsers(request):
    queryset = Nodes.objects.all()
    context = {
        'user_list': queryset,
    }
    return render(request,'universityUsers.html',context)

模板:

{% for p in user_list %}
       <tr>
           <td>{{ forloop.counter }}</td>
           <td>{{ p.node_name }}</td>
           <td>{{ p.user.email }}</td>
           <td>{{ p.node_mob }}</td>
           <td> ADDRESS FROM DOCCHAINUSER MODEL </td>
       </tr>
{% endfor %}

我想根据 Nodes 模型中的用户名从 DocchainUser 模型中检索 address

示例: test 用户名存在于两个模型中。我应该从测试用户的两个模型中检索记录。对于所有其他用户也是如此。

如何做到这一点?我被困在这里了。

提前致谢!

【问题讨论】:

    标签: python django django-models django-templates


    【解决方案1】:

    最好将related_names 提供给关系字段。比方说:

    docchainuser = models.OneToOneField(User,related_name="doc_user" on_delete = models.CASCADE)
    

    现在检索用户及其地址的所有数据:

    result=[]
    
        for node in Node.objects.all():  
    
           result.append({"node_name":node.node_name,"email":node.user.email,"address":node.user.doc_user.address})
    

    结果现在包含所有数据。您可以根据您的要求进行迭代。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 2013-05-30
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多