这个是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文件中了
这个特莫就是语法问题…
个人理解,请大神指教,感激不尽。