Django后端数据库的搭建和操作杂记

Django后端数据库的搭建和操作杂记

搭建数据库

  1. class TestModel(models.Model):
  2. 主键:id = models.AutoField(primary_key=True),Django会设置这个字段为主键,并自增。注意是AutoField
  3. 常用的有CharFiled,IntField,DateTimeField,TextField等,设置unique=True会限制此字段不能出现重复值
  4. 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)
  1. 注意有外键形成的一对多关系时,新建“多”的一方时需要指定关联的“一”的实例

  2. 可以通过外键正反查:

    x.one # x是“多”的一个实例,one是“一”在“多”中的外键名,这样可以直接获取对应的“一”的实例
    
    one.testmodel_set.all() # one是“一”的一个实例,testmodel是“多”的模型名(注意是小写!),_set().all()可以获得与one关联的所有的“多”的实例
    
posted @ 2021-09-28 21:42  Baoding_LIU  阅读(109)  评论(0)    收藏  举报