django 多对多 关系操作物理外键

# 迁移模型之后 ,数据库会多出一个表   应用名_表明_外键   #例如: home_users_uid

# 书籍
class Books(models.Model):
    title = models.CharField(max_length=50)
    author = models.CharField(max_length=50)

# 标签
class Tags(models.Model):
    name = models.CharField(max_length=10)
    # 多对多关系定义
    bid = models.ManyToManyField(to="Books")

    def __str__(self):
        return '<Tags: '+self.name+' object>'



# 多对多的操作
def manymomany(request):

    # 添加

        # # 创建书籍
        # b1 = Books(title='<<Python3.7从零开始学>>',author='刘宇宙')
        # b2 = Books(title='<<学PHP>>',author='哒哒哒')
        # b1.save()
        # b2.save()

        # # 创建标签
        # t1 = Tags(name='Python')
        # t2 = Tags(name='计算机编程')
        # t3 = Tags(name='PHP')

        # t1.save()
        # t2.save()
        # t3.save()

        # # 给书籍添加标签
        # t1.bid.add(b1)
        # t2.bid.add(b1)
        # t2.bid.add(b2)
        # t3.bid.add(b2)

    # 查询

        # 通过书 获取当前书下的所有标签
        # b = Books.objects.first()
        # print(b.title)
        # print(b.author)
        # print(b.tags_set.all())


        # 通过标签.获取当前标签下的所有书
        # t = Tags.objects.get(id=2)
        # print(t.name)
        # # 注意,在使用有外键的模型进行相关查询时,使用外键属性即可
        # print(t.bid.all())

    # 如果删除关系中的任何一个数据,对另外一个表数据不产生影响,但是会删除对应的关系数据
        # b = Books.objects.first()
        # b.delete()


    return HttpResponse('多对多的操作')


猜你喜欢

转载自blog.csdn.net/Doraemon_meow_meow/article/details/90110775
今日推荐