django model有 user 外键自动保存
时间: 2024-03-08 16:50:37 浏览: 129
使用django自带的user做外键的方法
在Django的模型中,如果定义了一个外键(ForeignKey)字段,那么在保存模型对象时,Django会自动保存关联对象。如果这个外键是指向Django的User模型(即用户模型),那么Django会自动为你创建一个用户对象,并将其与外键字段关联起来。
举个例子,假设你有一个博客应用,其中有一个Post模型和一个User模型,你想让每篇博客都有一个作者,可以在Post模型中添加一个外键字段,指向Django的User模型:
```python
from django.db import models
from django.contrib.auth.models import User
class Post(models.Model):
title = models.CharField(max_length=100)
content = models.TextField()
author = models.ForeignKey(User, on_delete=models.CASCADE)
```
在这个模型中,我们定义了一个ForeignKey字段,指向Django的User模型,并设置了on_delete为CASCADE,表示当User对象被删除时,所有与之相关的Post对象也会被删除。
当你在视图中创建一个新的Post对象时,只需要将author字段设置为当前登录用户即可:
```python
from django.shortcuts import render, redirect
from django.contrib.auth.decorators import login_required
from .models import Post
@login_required
def create_post(request):
if request.method == 'POST':
title = request.POST.get('title')
content = request.POST.get('content')
post = Post(title=title, content=content, author=request.user)
post.save()
return redirect('post_detail', pk=post.pk)
else:
return render(request, 'create_post.html')
```
在这个视图中,我们从POST请求中获取title和content字段,然后创建一个新的Post对象,并将author字段设置为当前登录用户,最后保存到数据库中。
这样,当你创建一个新的Post对象时,Django会自动创建一个与之关联的User对象,并将其保存到数据库中。
阅读全文