Django ORM 一对多

model.py

from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=255)

class Post(models.Model):
    title = models.CharField(max_length=255)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)

    def __str__(self):
        return self.title

view.py

from django.http import HttpResponse
from django.shortcuts import render
from OnetoOne.models import Post, Category


def test(request):
    posts = Post.objects.all()                      # 所有文章
    category = Category.objects.get(pk=1) # 获取id为1的分类
    posts = category.post_set.all()             # 该分类下的所有文章(post_set)                                                                                           可以被重写
    
    post_new = Post(title='Djang Book')
    category.post_set.add(post_new, bulk=False)  
        # add方法在未保存的post_new情况下必须指定bulk=False
    
    for post in posts:
        print(post)

    return HttpResponse('success')

重写_set

category = models.ForeignKey(Category, on_delete=models.CASCADE, related_name='the_posts')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容