Python django中everyuser的自有数据
因此,我正在Django中构建一个待办应用程序。我已经为用户和待办事项创建了数据库。但我有一个问题,每个用户如何拥有自己的数据。就像每个用户都应该添加自己的数据一样。似乎没有答案。 我的模特Python django中everyuser的自有数据,python,django,database,sqlite,Python,Django,Database,Sqlite,因此,我正在Django中构建一个待办应用程序。我已经为用户和待办事项创建了数据库。但我有一个问题,每个用户如何拥有自己的数据。就像每个用户都应该添加自己的数据一样。似乎没有答案。 我的模特 class Task(models.Model): title = models.CharField(max_length=200) complete = models.BooleanField(default=False) created = models.DateTimeFiel
class Task(models.Model):
title = models.CharField(max_length=200)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
def __str__(self):
return self.title
我的表格.py
class CreateUserForm(UserCreationForm):
class Meta:
model = User
fields = ['username','email','password1','password2']
那么我如何将两者联系起来呢。我有一个红色的密码,我必须使用外键。但是我真的不明白我该怎么做你在任务
模型中指定了一个引用构建它的用户:
# app/models.py
from django.db import models
from django.conf import settings
class Task(models.Model):
title = models.CharField(max_length=200)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE
)
def __str__(self):
return self.title
然后在视图中,我们可以在我们创建的实例中“注入”用户,例如:
# app/forms.py
from django import forms
from app.models import Task
class TaskForm(forms.ModelForm):
class Meta:
model = Task
exclude = ['user']
# app/views.py
from django.contrib.auth.decorators import login_required
from django.shortcuts import redirect
from app.forms import TaskForm
@login_required
def create_task(request):
if request.method == 'POST':
form = TaskForm(request.POST, request.FILES)
if form.is_valid():
form.instance.user = request.user
form.save()
return redirect('name-of-some-view')
else:
form = TaskForm()
return render(request, 'some_template.html', {'form': form})
#app/views.py
从django.contrib.auth.decorators导入所需的登录名
从django.shortcuts导入重定向
从app.forms导入TaskForm
@需要登录
def创建_任务(请求):
如果request.method==“POST”:
表单=任务表单(request.POST、request.FILES)
如果form.is_有效():
form.instance.user=request.user
form.save()
返回重定向('name-of-some-view')
其他:
表单=任务表单()
返回呈现(请求'some_template.html',{'form':form})
注意:如果POST请求成功,您应该
实施。
这样可以避免在用户刷新日志时发出相同的POST请求
浏览器
哇,太棒了。非常感谢你在这方面排除了什么mean@LalliGarden:
exclude=['user']
,您不能将其作为表单字段添加(这样用户就不能选择另一个用户来拥有任务
对象)。