Django后端数据库的搭建和操作杂记
Django后端数据库的搭建和操作杂记
搭建数据库
class TestModel(models.Model):- 主键:
id = models.AutoField(primary_key=True),Django会设置这个字段为主键,并自增。注意是AutoField - 常用的有
CharFiled,IntField,DateTimeField,TextField等,设置unique=True会限制此字段不能出现重复值 models.ForeignKey('AnotherModel', on_delete=models.CASCADE)利用ForeignKey可以设置外键,实现一对多关系。(外键设置在“多”的模型中,括号内的是“一”的模型名,CASCADE表示“一”删除了,对应的“多”也会跟着删除)
操作数据库
增
TestModel.objects.create(field1=...,
field2=...,
field3=...)
# or
new = TestModel(field1=...,
field2=...,
field3=...)
new.save()
删
id = request.POST.get('id')
TestModel.objects.filter(pk=id).first().delete() # 注意先用.first()取出要删除的数据
改
id = request.POST.get('id')
a_data = TestModel.objects.get(pk=id)
a_data.field1 = new_value
a_data.save()
# or
TestModel.objects.filter(pk=id).update(new_value)
查
TestModel.objects.all()
TestModel.objects.all().values('user') # 只取user列
TestModel.objects.all().values_list('id','user') # 取出id和user列,并生成一个列表
TestModel.objects.get(id=1)
TestModel.objects.get(field1=value)
注意有外键形成的一对多关系时,新建“多”的一方时需要指定关联的“一”的实例
可以通过外键正反查:
x.one # x是“多”的一个实例,one是“一”在“多”中的外键名,这样可以直接获取对应的“一”的实例 one.testmodel_set.all() # one是“一”的一个实例,testmodel是“多”的模型名(注意是小写!),_set().all()可以获得与one关联的所有的“多”的实例

浙公网安备 33010602011771号