django如何创建用户的实例
我正在创建一个简单的应用程序,成功地为单个用户创建,但我想为多个用户开发,但无法做到。。。i、 用户A可以创建他的任务并保存在数据库中。类似的B用户可以创建任务并存储在数据库中。每个人都可以看到自己的任务我是新手无法继续创建实例是否有人可以引导我或指向我的博客(在线搜索但没有帮助)我已经问过这个问题,但我不清楚()希望现在我清楚了 我的模型: 从django.contrib.auth.models导入用户,AbstractUser 从django.db导入模型django如何创建用户的实例,django,Django,我正在创建一个简单的应用程序,成功地为单个用户创建,但我想为多个用户开发,但无法做到。。。i、 用户A可以创建他的任务并保存在数据库中。类似的B用户可以创建任务并存储在数据库中。每个人都可以看到自己的任务我是新手无法继续创建实例是否有人可以引导我或指向我的博客(在线搜索但没有帮助)我已经问过这个问题,但我不清楚()希望现在我清楚了 我的模型: 从django.contrib.auth.models导入用户,AbstractUser 从django.db导入模型 # Create your mod
# Create your models here.
from django.db.models import Sum, Avg
class Task(models.Model):
user = models.ForeignKey(User, null=True,on_delete=models.CASCADE)
title = models.CharField(max_length=200)
complete = models.BooleanField(default=False)
created = models.DateTimeField(auto_now_add=True,auto_now=False,blank=True)
purchase_date = models.DateField(auto_now_add=False,auto_now=False,blank=True,null=True)
price = models.FloatField(max_length=5,default='0.00',editable=True)
def __str__(self):
return self.title
@classmethod
def get_price_total(cls):
total = cls.objects.aggregate(total=Sum("price"))['total']
print(total)
return total
视图
def createTask(request):
form = TaskForm()
if request.method =='POST':
form=TaskForm(request.POST)
if form.is_valid():
form.save()
return redirect('query')
context = {'form':form}
return render(request,'tasks/create.html',context)
def display(request):
# tasks = Task.objects.all()
tasks = request.user.task_set.all()
form = TaskForm()
if request.method =='POST':
if form.is_valid():
form.save()
return redirect('/')
# tasks= task.objects.all()
print("tasks",Task.get_price_total)
context = {'tasks':tasks,'form':form,'Totalprice':Task.get_price_total}
return render(request,'tasks/products.html',context)
from django.urls import path
from . import views
urlpatterns = [
#path('', views.index, name="list"),
path('', views.query, name="query"),
path('create/', views.createTask, name="create"),
path('update_task/<str:pk>/', views.updateTask, name="update_task"),
path('register/', views.registerPage,name="register"),
path('login/', views.loginPage,name="login"),
path('logout/', views.logoutUser,name="logout"),
path('delete/<str:pk>/', views.deleteTask, name="delete"),
path('query/', views.query, name="query"),
path('products/', views.display, name="products"),
path('search/', views.showresults, name="search"),
]
URL
def createTask(request):
form = TaskForm()
if request.method =='POST':
form=TaskForm(request.POST)
if form.is_valid():
form.save()
return redirect('query')
context = {'form':form}
return render(request,'tasks/create.html',context)
def display(request):
# tasks = Task.objects.all()
tasks = request.user.task_set.all()
form = TaskForm()
if request.method =='POST':
if form.is_valid():
form.save()
return redirect('/')
# tasks= task.objects.all()
print("tasks",Task.get_price_total)
context = {'tasks':tasks,'form':form,'Totalprice':Task.get_price_total}
return render(request,'tasks/products.html',context)
from django.urls import path
from . import views
urlpatterns = [
#path('', views.index, name="list"),
path('', views.query, name="query"),
path('create/', views.createTask, name="create"),
path('update_task/<str:pk>/', views.updateTask, name="update_task"),
path('register/', views.registerPage,name="register"),
path('login/', views.loginPage,name="login"),
path('logout/', views.logoutUser,name="logout"),
path('delete/<str:pk>/', views.deleteTask, name="delete"),
path('query/', views.query, name="query"),
path('products/', views.display, name="products"),
path('search/', views.showresults, name="search"),
]
从我听到的声音来看,当用户创建任务时,您希望保存任务。您不希望在表单中包含用户字段。您必须首先获取由
TaskForm.save()方法返回的模型实例。现在您必须将user
字段分配给request.user
,因为用户已通过身份验证。下面是你如何做到这一点的
def createTask(request):
form = TaskForm()
task = None
if request.method =='POST':
form=TaskForm(request.POST)
if form.is_valid():
#Just get the Task instance do not make any commitments to database
task = form.save(commit=False)
#Now update the user
task.user = request.user
#Finally save to database
task.save()
return redirect('query')
context = {'form':form}
return render(request,'tasks/create.html',context)
在显示器上,您将收到一个错误,因为您仅在发出POST请求时返回响应。检查您的识别并更正它。python中的idention表示作用域。检查我是否修改了你的代码
def display(request):
#tasks = Task.objects.all()
tasks = request.user.task_set.all()
form = TaskForm()
if request.method =='POST':
if form.is_valid():
form.save()
return redirect('/')
#tasks= task.objects.all()
print("tasks",Task.get_price_total)
context = {'tasks':tasks,'form':form,'Totalprice':Task.get_price_total}
return render(request,'tasks/products.html',context)
看一看非常感谢它的工作,然后列出仅由该用户创建的任务如何request.user.Task\u set.all()
将返回该用户创建的所有任务。这是因为您仅在发出POST请求时才返回响应。检查答案我已经修改了。这是因为只有在发出POST请求时,您才返回响应。检查答案,我已经修改了。