python - Django外键objects.get的问题
PHPz
PHPz 2017-04-17 13:56:17
[Python讨论组]

model定义如下:

class Tag(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=100,verbose_name='名称')
    def __unicode__(self):
        return self.name


class Post(models.Model):
    id = models.AutoField(primary_key=True)
    author = models.ForeignKey(User)
    post_date = models.DateField(verbose_name='日期', auto_now=True)
    post_title = models.CharField(verbose_name='标题', max_length=100)
    post_content = RichTextField(verbose_name='内容')
    post_tag = models.ForeignKey(Tag, verbose_name='标签')

在views.py里我是这样写的:

def tag(request, tag):
    post_list = Post.objects.filter(post_tag.name = tag)
    return render_to_response('tag.html',{'post_list':post_list,'tag':tag})

直接报语法错误Unresolved reference ‘post_tag’,如果写成post_tag = tag,网页上会报

ValueError at /tag/test/

invalid literal for int() with base 10: 'test'

Request Method:     GET
Request URL:    http://127.0.0.1:8000/tag/test/
Django Version:     1.7.1
Exception Type:     ValueError
Exception Value:    

invalid literal for int() with base 10: 'test'

就是想筛选下post_tag等于tag的Post,究竟该怎么写?

PHPz
PHPz

学习是最好的投资!

全部回复(1)
伊谢尔伦

post_tag 这里是一个对象

pythondef tag(request, tag):
    tag = Tag.object.get(name=tag)
    post_list = Post.objects.filter(post_tag=tag)
    return render_to_response('tag.html',{'post_list':post_list,'tag':tag})

django 的orm 查询属性不是用 . 而是用 __连接的,题主可以试试

post_list = Post.objects.filter(post_tag__name=tag)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号