一、前言
今天我们来学习一下,如果增加一个有外键的表,和在前端页面如何实现一个动态的下拉框选项。
二、增加数据
说明:我们给一个有外键的表增加一条数据。
models.UserInfo.objects.create(
username="honggege",
password="123",
user_group_id=1, #外键值
user_type_id=2
)
虽然在modles里面是user_group,这个user_group是UserGroup的对象,如下:
class UserInfo(models.Model):
username = models.CharField(max_length=32,help_text="用户名")
password = models.CharField(max_length=60)
user_group = models.ForeignKey("UserGroup",to_field="uid",default=1,on_delete=models.CASCADE,)
user_type_choices = (
(1,"超级用户"),
(2,"普通用户"),
(3,"访客"),
)
user_type_id = models.IntegerField(choices=user_type_choices,default=1)
但是在数据库生成的字段是 user_group_id,所以还是采用user_group_id = 1的方式。
三、动态下拉框选项
3.1、动态下拉框
说明:我们做一个select的动态下拉框
view.py的代码如下:
def user_info(request):
from app01 import models
if request.method == "GET":
user_list = models.UserInfo.objects.all()
group_list = models.UserGroup.objects.all() #组列表
return render(request,'user_info.html',{'user_list':user_list,'group_list':group_list})
前端代码编写如下:
<select name="group_name">
{% for item in group_list %}
<option value="{{ item.uid }}">{{ item.groupname }}</option>
{% endfor %}
</select>
四、外键原理
我如果需要通过userinfo表找到foo表中的name
user_obj = models.UserInfo.objects.filter(id=1).first()
user_obj.group.name
五、总结
一对多:
- 外键
- 外键字段_id
- modles.tb.objects.create(name='root',user_group_id=1)
- userlist = models.tb.objects.all
for row in userlist:
row.id
row.user_group_id
row.user_group.groupname