[英]Django how to make model for user model
我正在開發帶有注冊的列表應用程序。 我有兩個模型:用戶模型和任務模型。 我向一個用戶添加了新任務 throw Ajax,它為每個用戶添加和顯示。 有什么解決辦法嗎? 這里有一些圖片
這是我的代碼: models.py
class Task(models.Model):
title=models.IntegerField()
date = models.DateTimeField(default=datetime.now,blank=True)
is_published=models.BooleanField(default=True)
class CustomUser(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
image=models.FileField(upload_to='photos/%Y/%m/%d/',null=True,blank=True)
視圖.py
if request.method == 'POST' and request.POST['form_type'] == 'task':
if request.is_ajax():
addtask = AddTask(request.POST)
if addtask.is_valid():
user = request.user.id
addtask.objects.filter(user=user).cleaned_data
addtask.objects.filter(user=user).save()
task_object = Task.objects.filter(user=user)(addtask)
return JsonResponse({'error': False, 'data': task_object})
else:
print(addtask.errors)
return JsonResponse({'error': True, 'data': addtask.errors})
else:
error = {
'message': 'Error, must be an Ajax call.'
}
return JsonResponse(error, content_type="application/json")
addtask = AddTask()
task = Task.objects.order_by('-date').filter(is_published=True)
html頁面
{% if task %}
{% for tas in task %}
Task content
{% endfor %}
{% else %}
{% endif %}
也許您應該在任務模型中添加與 CustomUser 的關系,並在將數據渲染到模板之前按所有者過濾任務?
class Task(models.Model):
title=models.IntegerField()
date = models.DateTimeField(default=datetime.now,blank=True)
is_published=models.BooleanField(default=True)
user=models.ForeignKey(CustomUser)
class CustomUser(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
image=models.FileField(upload_to='photos/%Y/%m/%d/',null=True,blank=True)
並認為:
...
addtask = AddTask()
task = Task.objects.filter(is_published=True, user_id=request.user.id).order_by('-date')
所以錯誤是你從來沒有將你的CustomUser 模型與你的Task 模型連接起來。 他們應該有一對多的關系。 一旦實現,您只需從數據庫中檢索與感興趣的用戶相關的任務,並將它們發送到 HTML 頁面。 然后只顯示與一個特定用戶相關的任務。
如果你想創建 CustomUser 模型,你應該創建一個類並從AbstractBaseUser或AbstractUser繼承它( django 文檔)。
您的任務模型與 CustomUser 沒有關系。 您創建了 AddTask(?) 實例,但沒有將它與任何用戶綁定。
您沒有提交呈現 HTML 模板的視圖,但我認為您的查詢類似於Tasks = Task.objects.all()
返回所有任務。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.