Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python django中everyuser的自有数据_Python_Django_Database_Sqlite - Fatal编程技术网

Python django中everyuser的自有数据

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

因此,我正在Django中构建一个待办应用程序。我已经为用户和待办事项创建了数据库。但我有一个问题,每个用户如何拥有自己的数据。就像每个用户都应该添加自己的数据一样。似乎没有答案。 我的模特

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']
,您不能将其作为表单字段添加(这样用户就不能选择另一个用户来拥有
任务
对象)。