django外键正向,反向查询

这篇博客探讨了Django中Model的定义及外键操作,包括Person_info、File_info和File_version三个模型的详细字段说明。通过示例展示了如何进行外键查询,如过滤、获取最新版本文件信息等操作,深入理解Django的数据操作和关联查询能力。
摘要由CSDN通过智能技术生成
class Person_info(models.Model):
    person_id = models.AutoField(primary_key=True)
    person_name = models.CharField(verbose_name='姓名',max_length=32, unique=True)
    password = models.CharField(verbose_name='密码',max_length=32,unique=True)

    class Meta:
        verbose_name = '个人信息'
        verbose_name_plural = verbose_name
        db_table = 'person_info'
class File_info(models.Model):
    file_id = models.AutoField(primary_key=True)
    ffile_id = models.CharField(verbose_name='父文件id', max_length=64, null=True, blank=True)
    file_name = models.CharField(verbose_name='文件姓名', max_length=255, null=True, blank=True)
    person_id = models.ForeignKey('Person_info',to_field='person_id',verbose_name='个人信息主键id',related_name='fperson_id',on_delete = models.CASCADE)
    is_delete = models.CharField(choices=(('1', '是'), ('0', '否')), max_length=10, default='0', verbose_name='逻辑删除')

    class Meta:
        verbose_name = "文件信息"
        verbose_name_plural = verbose_name
        db_table = 'file_info'
class File_version(models.Model):
    fversion_id = models.AutoField(primary_key=True)
    file_id = models.ForeignKey('File_info',to_field='file_id',verbose_name='文件信息表主键id',related_name='fvfile_id',on_delete = models.CASCADE)
    person_id = models.ForeignKey('Person_info',to_field='person_id',verbose_name='个人信息主键id',related_name='fvperson_id',on_delete = models.CASCADE)
    update_time = models.DateTimeField(verbose_name='更新时间',default=datetime.datetime.now)
    file_url = models.CharField(verbose_name='文件地址',max_length=64, null=True, blank=True)
    type = models.CharField(verbose_name='文件类型',max_length=32, null=True, blank=True)
    size = models.IntegerField(null=True, blank=True)
    file_version = models.IntegerField(null=True, blank=True)
    file_remark = models.TextField(verbose_name='文件备注', null=True, blank=True)
    is_delete = models.CharField(choices=(('1', '是'), ('0', '否')), max_length=10, default='0', verbose_name='逻辑删除')

查询

file_msg_datas = models.File_info.objects.filter(ffile_id=str(file_id),is_delete="0")
for data in file_msg_datas:
    file_name = data.file_name
    folder_detailed_info = list(data.fvfile_id.filter(is_delete="0").order_by("-file_version").values())[0]
file_msg_datas = models.File_info.objects.filter(file_id=str(file_id), is_delete="0").first()
folder_detailed_info = list(file_msg_datas.fvfile_id.filter(is_delete="0").order_by("-file_version").values())
for detailed_info in folder_detailed_info:
    person_id = detailed_info["person_id_id"]
    operator = models.Person_info.objects.filter(person_id=person_id).first()
django–外键和表数据的操作

向多方表中添加数据:(多表中有一个字段是外键)
	O = One.objects.get(id=xxx)
	T = Two.objects.create(name="xxx", 外键_id=O.id)

查询多表中的数据:(一查多)
	O = One.objects.get(id=xxx)
    O.two_set.all()
    
查询一表中数据:(多查一)
	T = Two.objects.get(id=xxx)
	T.外建名
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值