Sql 加入Django?
我试图在Django中创建一个应用程序,但我需要在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
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')