簡體   English   中英

Django如何為用戶模型制作模型

[英]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 頁面。 然后只顯示與一個特定用戶相關的任務。

  1. 如果你想創建 CustomUser 模型,你應該創建一個類並從AbstractBaseUserAbstractUser繼承它( django 文檔)。

  2. 您的任務模型與 CustomUser 沒有關系。 您創建了 AddTask(?) 實例,但沒有將它與任何用戶綁定

  3. 您沒有提交呈現 HTML 模板的視圖,但我認為您的查詢類似於Tasks = Task.objects.all()返回所有任務。

這是您應該如何創建 CustomUser 模型

這是關於 Django 關系的文檔

這是關於在 Django 中進行查詢

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM