django外键获取数据

用django写一个项目时,使用外键获取数据遇到一个问题。

models创建的购物车表:

class CarModel(models.Model):
    user = models.ForeignKey(UserModel)   # 关联用户
    goods = models.ForeignKey(Goods)       # 关联商品
    c_num = models.IntegerField(default=1)  # 商品的个数
    is_select = models.BooleanField(default=True)  # 是否选择商品

    class Meta:
        db_table = 'axf_cart'

关联的用户表:

class UserModel(models.Model):
    username = models.CharField(max_length=32,unique=True)
    password = models.CharField(max_length=256)
    email = models.CharField(max_length=64, unique=True)
    sex = models.BooleanField(default=False)
    icon = models.ImageField(upload_to='icon')
    is_delete = models.BooleanField(default=False)
    ticket = models.CharField(max_length=50,null=True)

关联的商品表:

class Goods(models.Model):
    productid = models.CharField(max_length=16)  # 商品的id
    productimg = models.CharField(max_length=200)  # 商品的图片
    productname = models.CharField(max_length=100)  # 商品的名称
    productlongname = models.CharField(max_length=200)  # 商品的规格
    isxf = models.IntegerField(default=1)
    pmdesc = models.CharField(max_length=100)
    specifics = models.CharField(max_length=100)  # 规格
    price = models.FloatField(default=0)  # 商品的折后价格
    marketprice = models.FloatField(default=1)  # 商品的原价
    categoryid = models.CharField(max_length=16)  # 分类的id
    childcid = models.CharField(max_length=16)  # 子分类的id
    childcidname = models.CharField(max_length=100)  # 子分类的名称
    dealerid = models.CharField(max_length=16)
    storenums = models.IntegerField(default=1)  # 排序
    productnum = models.IntegerField(default=1)  # 销量排序

在views.py 验证登录后,外键获取数据,获取UserMode中的数据能获取到,这里是获取用户的用户名:

def Cart(request):
    ticket = request.session['ticket']
    if ticket:
        user = UserModel.objects.get(ticket = ticket)
        cars = CarModel.objects.filter(user_id = user.id)

        for car in cars:
            # imgurl = car.goods.productimg
            # print(goods)
            username = car.user.username #获取UserModel中用户的用户名
            print(username)
        return render (request, 'cart/cart.html', {'title': '购物车','cars':cars, 'user': user})
    else:
        return render (request, 'mine/login.html')

结果:

[25/Aug/2019 12:15:12] "GET /static/base/css/bootstrap.css.map HTTP/1.1" 404 1691
aiden     执行后的结果
[25/Aug/2019 12:15:13] "GET /cart/ HTTP/1.1" 200 5223
[25/Aug/2019 12:15:13] "GET /static/base/js/maps/swiper.jquery.js.map HTTP/1.1" 404 1712
[25/Aug/2019 12:15:13] "GET /static/base/css/bootstrap.css.map HTTP/1.1" 404 1691

而获取商品中(class Goods(models.Model))的数据时,这里是获取商品图片的url;商品中的其他数据也不能获得:

def Cart(request):
    ticket = request.session['ticket']
    if ticket:
        user = UserModel.objects.get(ticket = ticket)
        cars = CarModel.objects.filter(user_id = user.id)

        for car in cars:
            imgurl = car.goods.productimg
            print(imgurl)
            # username = car.user.username
            # print(username)
        return render (request, 'cart/cart.html', {'title': '购物车','cars':cars, 'user': user})
    else:
        return render (request, 'mine/login.html')

就会报错:

  File "C:\Users\Administrator\AppData\Local\Programs\Python\Python37\lib\site-packages\django\db\models\query.py", line 380, in get
    self.model._meta.object_name  
axf.models.DoesNotExist: Goods matching query does not exist.  就报错这个 
[25/Aug/2019 12:19:30] "GET /cart/ HTTP/1.1" 500 84187

有没有哪位大佬知道这是什么原因?我应该怎么解决啊?

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值