Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 加入Django?_Sql_Django_Join_Orm - Fatal编程技术网

Sql 加入Django?

Sql 加入Django?,sql,django,join,orm,Sql,Django,Join,Orm,我试图在Django中创建一个应用程序,但我需要在Django中创建一个连接,类似这样的操作: SELECT User.name, Post.contain from User, Post where Post.User_id = User.id; 我能得到用户名吗 我的模型是 from django.db import models from django.contrib.auth.models import User class Post(models.Model): titu

我试图在Django中创建一个应用程序,但我需要在Django中创建一个连接,类似这样的操作:

SELECT User.name, Post.contain from User, Post where Post.User_id = User.id;
我能得到用户名吗

我的模型是

from django.db import models
from django.contrib.auth.models import User


class Post(models.Model):
    titulo = models.CharField(max_length = 60)
    contenido = models.TextField(max_length = 140)
    fecha = models.DateTimeField(auto_now_add = True, blank = True)
    usuario = models.ForeignKey(User)

    def __unicode__(self):
        return self.titulo

非常感谢您的帮助=)

大多数时候,您不必担心加入。这是我的工作

posts = Post.objects.filter(user=user)
在第一次查询之后,用户应该在ORM缓存中,所以不要担心性能,除非您检测到性能瓶颈(过早优化是所有问题的根源)

[更新]

django.contrib.auth.models.User
缺少名为
name
的字段。它有
用户名
。还有karthikr建议的
get_full_name
method`

下面的结果是什么

Post.objects.filter(user=user_id)
模板应为:

{% for post in posts %}
    {% if forloop.first %}
    <h1>{% trans 'Posts for' %}
        {{ post.usuario.get_full_name|default:post.usuario.username }}
    </h1>
    <ul>
    {% endif %}
      <li>{{ post.contenido }}</li>
    {% if forloop.last %}
    </ul>
    {% endif %}
{% endfor %}

{post.user.name}应该是{post.user.get_full_name}@karthikr:OP代码段有
user.name
,我不能假设
user
是来自
django.contrib.auth.models.user
@Cris\u-Towi的同一个对象,除非看到模型定义,否则无法复制您的问题。请用更多信息更新您的问题。@Cris_Towi:我想帮助您,但它对我有用。是否有任何错误消息?我的答案更新了,你尝试过一些建议吗?如果是,你介意公布你的结果吗?
Post.objects.filter(user=user_id)
{% for post in posts %}
    {% if forloop.first %}
    <h1>{% trans 'Posts for' %}
        {{ post.usuario.get_full_name|default:post.usuario.username }}
    </h1>
    <ul>
    {% endif %}
      <li>{{ post.contenido }}</li>
    {% if forloop.last %}
    </ul>
    {% endif %}
{% endfor %}
Post.objects.select_related().filter(usuario=user_id)\
                         .values('usuario__username', 'contenido')