day18-基于DjangoORM的外键实现增加用户(含select标签)

一、前言

  今天我们来学习一下,如果增加一个有外键的表,和在前端页面如何实现一个动态的下拉框选项。

二、增加数据

说明:我们给一个有外键的表增加一条数据。

    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

 五、总结

  一对多:

  1. 外键
  2. 外键字段_id
  3. modles.tb.objects.create(name='root',user_group_id=1)
  4. userlist = models.tb.objects.all

   for row in userlist:

     row.id

     row.user_group_id

     row.user_group.groupname

posted @ 2018-03-13 15:56  帅丶高高  阅读(257)  评论(0)    收藏  举报