django foreignkey外鍵使用的例子 相當于left join
django外鍵使用 一對一
因為django中處于安全和方便將數(shù)據(jù)庫中的表封裝成模型,所以很多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中用__unicode__替換__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.外鍵字段.外鍵表屬性 來顯示數(shù)據(jù),比如 person.school.province.post
{% extends 'base.html' %}
{% block content %}
<form action="." method="POST">
{% csrf_token %}
{{ form }}
<input type="submit" value='submit' />
</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就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
刪除python pandas.DataFrame 的多重index實例
今天小編就為大家分享一篇刪除python pandas.DataFrame 的多重index實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06
python數(shù)據(jù)解析BeautifulSoup爬取三國演義章節(jié)示例
這篇文章主要介紹了python數(shù)據(jù)解析BeautifulSoup爬取三國演義章節(jié)示例,文中附含詳細示例代碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
Python 網(wǎng)絡編程之UDP發(fā)送接收數(shù)據(jù)功能示例【基于socket套接字】
這篇文章主要介紹了Python 網(wǎng)絡編程之UDP發(fā)送接收數(shù)據(jù)功能,結合實例形式分析了Python使用socket套接字實現(xiàn)基于UDP協(xié)議的數(shù)據(jù)發(fā)送端與接收端相關操作技巧,需要的朋友可以參考下2019-10-10

