关于模型中的GenericRelation

关于模型中的GenericRelation

问题出现在:获取景点图片的数量

课程视频中代码是:(方式一)

@property
def image_count(self):
	return self.images.filter(is_valid=True).count()

我通过这种方式,获取到的始终是图片数量始终是0

我用这种方法才能获取到正确的数量:(方式二)

@property
def image_count(self):
	return ImageRelated.objects.filter(object_id=self.pk, is_valid=True).count()

为什么方式一不行?定义模型中的 images字段代码如下,与老师一致

images = GenericRelation(ImageRelated, verbose_name='关联的图片', related_name='rel_sight_images')

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学,你好!老师这边猜测是数据问题,分析思路如下:

1、代码仍然按方式一的写法,Sight.objects.first(),老师这边获取到的景点id是105,同学获取的是1,可以调用一下景点图片接口,查看接口是否能获取到图片,如:http://127.0.0.1:8000/sight/image/list/105/

http://img1.sycdn.imooc.com//climg/60fb79f809931be010250488.jpg

http://img1.sycdn.imooc.com//climg/60fb7bf40995186208580123.jpg

2、检查system_image_related表中对应的景点id是否有图片,只有这里有图片,sight_obj.images才可以获取到

http://img1.sycdn.imooc.com//climg/60fb7c470924914d09680258.jpg

祝:学习愉快!

好帮手慕燕燕 2021-07-23 18:47:49

同学,你好!老师这边验证使用第一种方法是可以获取到景点图片数量的,同学对比一下景点查询的代码,看是否是参数传递不一样导致的

http://img1.sycdn.imooc.com//climg/60fa9d8909ab8bba06180130.jpg

http://img1.sycdn.imooc.com//climg/60fa9d51091d472809840591.jpg

祝:学习愉快!

  • 提问者 饿少 #1
    跟接口代码好像无关,我是不能从模型Sight得到其ImageRelate 模型对象
    2021-07-23 19:04:49
  • 提问者 饿少 #2

    http://img1.sycdn.imooc.com//climg/60faa3c909b6ea4709860584.jpg

    如上图:我无法通过Sight模型对象,获取到其images


    下图为我的数据表:

    http://img1.sycdn.imooc.com//climg/60faa3fb09c1246317480484.jpg


    下图为我的模型代码:

    http://img1.sycdn.imooc.com//climg/60faa4350969732b17340924.jpg


    下图为关联图片模型代码:

    http://img1.sycdn.imooc.com//climg/60faa4590999a4db17120752.jpg

    2021-07-23 19:13:36
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师