• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

django foreignkey外键使用的例子 相当于left join

python 搞代码 4年前 (2022-01-08) 17次浏览 已收录 0个评论

今天小编就为大家分享一篇django foreignkey外键使用的例子 相当于left join,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

django外键使用 一对一

因为django中处于安全和方便将数据库中的表封装成模型,所以很多sql原生的功能无法使用, 比如 left join,但是我们可以使用外键(foreignkey)来满足表表直接的关系。

设置模型

 # 在models.py 中添加 # Person 模型有两个外键, School和Province # class Province(models.Model): name = models.CharField('省份', max_length = 10) post = models.CharField('邮编', max_length = 10) def __str__ (self):#在Python2中用__unicode__替换__str__ return self.name # class School_Type(models.Model): #   school_type = models.CharField('学校类别') class School(models.Model): id = models.IntegerField('学校编号', primary_key=True) name = models.CharField('学校名称', max_length=200) address = models.CharField('学校地址', max_length=200) def __str__ (self):#在Python2中用__unic<i style="color:transparent">来源gaodai$ma#com搞$$代**码)网</i>ode__替换__str__ return self.name class Person(models.Model): name = models.CharField('姓名', max_length=50) age = models.IntegerField('年龄') address = models.CharField('地址', max_length=100) email = models.EmailField('电子邮件') school = models.ForeignKey(School, on_delete=models.CASCADE) province = models.ForeignKey(Province, on_delete = models.CASCADE) 

设置 ModelForm

因为Form的字段跟model的字段相同,所以我们直接使用 ModelForm, 使用ModelForm时外键会以 ChoiceField 字段来显示, 显示为 str()返回的字段

 # 因为Form的字段跟model的字段相同,所以我们直接使用 ModelForm class PersonForm(ModelForm): class Meta: model = Person fields = '__all__' 

保存

 views.py 中的view,可以直接使用 form.save() 来保存form def person(request): if request.POST: form = PersonForm(request.POST) if form.is_valid(): p = form.save() return HttpResponse(request, 'success') else: return HttpResponse(request, 'fail') else: form = PersonForm() person_list = Person.objects.all() # school_list = person_list.School_set.all() return render(request, 'person.html', locals()) 

模版 person.html

可以在模版中使用 person.外键字段.外键表属性 来显示数据,比如 person.school.province.post

 {% extends 'base.html' %} {% block content %}  {% csrf_token %} {{ form }}  {#  #} {% for person in person_list %} <p>name:{{ person.name }}; age: {{ person.age }}; school:{{ person.school}} {{ person.province.post }} </p> {% endfor %} {#  {{ school_list }}#} {% endblock %} 

以上就是django foreignkey外键使用的例子 相当于left join的详细内容,更多请关注gaodaima搞代码网其它相关文章!


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:django foreignkey外键使用的例子 相当于left join

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址