Django关于外键关联问题

这篇博客探讨了在Django中处理外键关联的问题,主要集中在models.py和views.py文件的使用。作者遇到并解决了语法问题,分享了个人理解和寻求指教的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这个是models.py文件

from django.db import models
class Room(models.Model):
    r_name = models.CharField(max_length=32)

class Animal(models.Model):
    a_name = models.CharField(max_length=32)
    a_age = models.IntegerField(default=1)
    a_r_id = models.ForeignKey(Room)  # 为什么这里不直接给id呢?而给个对象。试了一个给id直接报错。

这个是views.py文件

def addAnim(request):

    # 我测试过,r是一个Room object的对象,不是迭代器,然后不能用[0]这样用,不理解......
    r = Room.objects.last()
    print(type(r))  # 这个类型是Romm对象
    ani = Animal()
    ani.a_name = '旺财%d' % random.randrange(100)
    ani.a_age = 3
    ani.a_r_id = r  #请问这里的r为什么可以直接作为外键使用????
    print(r.id)  # 这里可以打印出id值,不过却不可以在上面加id,因为ani.a_r_id需要关联一个对象,不过为什么不能在models.py内(上面已经注释了问题)
    ani.save()
    return HttpResponse('小动物进窝了')


def showAnim(request):
	# filter是一个过滤器,返回一个Queryset集合,所以下标选择第一个
    r = Room.objects.filter(r_name='旺财家22')[0]
    # 这返回的是一个对象了。
    id = r.id  #这里对象可以寻找id,然后外键过滤,最后,最后得到结论...
    anis = Animal.objects.filter(a_r_id=id)
    context = {'animals':anis}
    return render(request,'anim.html',context=context)

现在有头绪了,在models.py文件中就已经指出关联的需要是一个Room,然后就是在views.py文件中了

这个特莫就是语法问题…
个人理解,请大神指教,感激不尽。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值