django 数据库模型

数据库查询操作

#查询一条数据
try:
    a = User.objects.get(email=email).first()
    a.vcode = '我很好' #查询再修改
    a.save() #再保存
except User.DoesNotExist:
    raise forms.ValidationError(_("该邮箱账户不存在"))


#列出表的所有数据
jieguo = Question.objects.all()

#查询符合条件的所有数据
jieguo = Question.objects.filter(name='我很好')
for b in jieguo:
    print(f"内容: {b.question_text}, 时间: {b.pub_date}")
    
#查询一条数据并且不会抛出错误	
user = User.objects.filter(email=email).first()
    
#查询数据是否存在,返回True或False
User.objects.filter(email=email).exists()

#列出符合多个条件的
from django.db.models import Q
#列出符合diqu='cn'或diqu='ty'的两种结果
shangpins = Shangpin.objects.filter(Q(diqu='cn') | Q(diqu='ty'))

#列出同时符合name='哇哈哈'且leixing='饮料'的一种结果:
shangpins = Shangpin.objects.filter(Q(name='哇哈哈') & Q(leixing='饮料'))

#查询所有符合zhuangtai='dd',然后排除bizhong='BTC'的结果
dingdans = Dingdan.objects.filter(zhuangtai='dd').exclude(bizhong='BTC')

数据库操作

from myapp.models import Choice, Question  #导入数据库
from django.utils import timezone  #导入时间

#写一条数据,并将对象赋予q
q = Question(question_text="你好", pub_date=timezone.now())
q.save() #保存

q.uestion_text  #读数据会返回"你好"
q.uestion_text = "你好呀"  #再重新指定
q.save()  #修改再保存
q.delete()   #删除这条数据

#直接写一条数据
Gouwuche.objects.create(user=request.user, sku=sku_id, number=1)

#直接删除数据
Gouwuche.objects.filter(user=request.user).delete()

#根据条件更新数据
Usdtqianbao.objects.filter(dizhi=chuzhidd.shoukuanqianbao).update(zhanyong=True) #前面是搜索条件,后面是更新内容

模型设置外键

class Dingdanmx(models.Model):
    dingdan = models.ForeignKey(Dingdan, on_delete=models.CASCADE, related_name='dingdanmxs')  #外键名
    sku = models.ForeignKey(Sku, on_delete=models.CASCADE)  # 需要定义 Sku 模型
    number = models.SmallIntegerField()
    jine = models.DecimalField(max_digits=25, decimal_places=15)
    jieshouzhanghao = models.CharField(max_length=255, null=True)
    neirong = models.CharField(max_length=255, null=True)
    xiadanid = models.CharField(max_length=255, null=True)
    jieguo = models.BooleanField(null=True)

模板中遍历外键

 {% for dingdanmx in dingdan.dingdanmxs.all %}
<small class="is-size-7">{{ dingdanmx.id }}
{% if dingdanmx.jieshouzhanghao %}
({{ dingdanmx.jieshouzhanghao }})
{% endif %}
</small>
{% endfor %}