django 外键的增删改查
时间: 2023-09-18 12:14:37 浏览: 93
Django 中的外键操作主要涉及到以下几个步骤:
1. 创建模型类时定义外键字段;
2. 在视图函数中进行增删改查操作;
3. 编写模板文件展示数据。
下面分别介绍这些步骤的具体实现。
1. 创建模型类时定义外键字段
在 Django 中,外键字段通过 ForeignKey 类型定义。例如,如果有一个模型类 Article,需要与另一个模型类 Category 建立外键关系,可以在 Article 中定义一个 category 字段,类型为 ForeignKey(Category, on_delete=models.CASCADE),其中 Category 是外键关联的模型类,on_delete=models.CASCADE 表示级联删除。
示例代码:
```python
from django.db import models
class Category(models.Model):
name = models.CharField(max_length=50)
class Article(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
category = models.ForeignKey(Category, on_delete=models.CASCADE)
```
2. 在视图函数中进行增删改查操作
在视图函数中进行外键操作时,需要先获取与外键关联的模型对象,再通过关联对象进行增删改查操作。
例如,如果需要查询所有分类为“Python”的文章,可以先获取分类对象,再通过分类对象获取所有文章对象。
示例代码:
```python
from django.shortcuts import render
from .models import Category, Article
def article_list(request):
# 获取所有分类为“Python”的文章
category = Category.objects.get(name='Python')
articles = category.article_set.all()
return render(request, 'article_list.html', {'articles': articles})
```
在上面的代码中,category.article_set.all() 表示获取所有与 category 对象关联的文章对象。
对于添加、删除和修改操作,也是先获取关联对象,再通过关联对象进行操作。例如,如果需要添加一篇分类为“Python”的文章,可以先获取分类对象,再通过分类对象创建文章对象。
示例代码:
```python
def article_add(request):
# 获取分类为“Python”的分类对象
category = Category.objects.get(name='Python')
# 创建一篇新文章
article = Article(title='New Article', content='Content', category=category)
article.save()
return render(request, 'article_add.html')
```
3. 编写模板文件展示数据
在模板文件中展示外键关联的数据时,可以通过关联对象的属性进行访问。例如,如果需要在文章列表页面中展示文章的分类信息,可以使用 article.category.name。
示例代码:
```html
{% for article in articles %}
<div>
<h3>{{ article.title }}</h3>
<p>{{ article.content }}</p>
<p>分类:{{ article.category.name }}</p>
</div>
{% endfor %}
```
以上就是 Django 中外键的增删改查操作的基本流程和示例代码。
阅读全文