如何将当前活动用户作为外键添加到Django 3的任务模型中?

达摩什·辛格

我正在创建一个使用django 3做网络应用程序的任务,我有两个模型,一个是UserCustom,另一个是UserTask,其中每个相应的活动用户都可以添加任务。我正在通过“模型表格”获得条目详细信息。要添加任务,用户需要登录。但是在UserTask模型中提到UserCustom作为前键时,会在“ AddTask.html”页面上创建一个带有所有注册用户的组合(下拉)框。

如何在UserTask模型中自动将当前活动用户添加为外键?

以下是代码

models.py

from django.db import models
from django.contrib.auth.models import User
from django.conf import settings
# Create your models here.

class UserCustom(models.Model):
    user=models.OneToOneField(User,on_delete=models.CASCADE)

    profile_pic=models.ImageField(upload_to='profile_pics',blank=True)

    def __str__(self):
        return self.user.username   #user os object defined above

class UserTask(models.Model):
    author = models.ForeignKey(UserCustom,on_delete=models.CASCADE)
    label=models.CharField(max_length=264)
    date=models.DateField()
    status=models.BooleanField(default=False)

    def __str__(self):
        return str(self.label)

表格

from django import forms
from django.forms.fields import DateField
from django.contrib.auth.models import User
from taskApp.models import UserCustom,UserTask
from django.contrib.admin.widgets import AdminDateWidget

class UserForm(forms.ModelForm):
    password=forms.CharField(widget=forms.PasswordInput())

    class Meta():
        model=User
        fields=('username','email','password')

class UserCustomForm(forms.ModelForm):
    class Meta():
        model=UserCustom
        fields=('profile_pic',)

class UserTaskForm(forms.ModelForm):
    date=DateField(widget=forms.DateInput(attrs={'placeholder': 'YYYY-MM-DD', 'required': 'required'}))
    class Meta():
        model=UserTask
        fields=('author','label','status','date')

views.py

from django.shortcuts import render
from taskApp.forms import UserForm,UserCustomForm,UserTaskForm

#below libraries required for login
from django.contrib.auth import authenticate,login,logout

from django.http import HttpResponseRedirect,HttpResponse
from django.urls import reverse
from django.contrib.auth.decorators import login_required

# Create your views here.
def index(request):
    return render(request,'taskApp/index.html')

@login_required
def add_task(request):
    #return HttpResponse("You are logged in, Nice!")
    added=False
    if request.method == "POST":
        task_form=UserTaskForm(data=request.POST)
        if task_form.is_valid():

            task=task_form.save()
            #task.user=user
            task.save()

            added=True

        else:
            print(task_form.errors)


    else: #no request=POST yet
        task_form=UserTaskForm()

    return render(request,'taskApp/task.html',{'added':added,'task_form':task_form})


@login_required
def user_logout(request):  #only login users can logout
    logout(request)
    return HttpResponseRedirect(reverse('index'))


def register(request):

    registered=False

    if request.method == "POST":

        user_form=UserCustomForm(data=request.POST)
        profile_form=UserProfileInfoForm(data=request.POST)

        if user_form.is_valid() and profile_form.is_valid():

            #grabbing user form ,saving to DB and hashing the password and then saving the changes
            user=user_form.save()
            user.set_password(user.password)
            user.save()

            profile=profile_form.save(commit=False)
            profile.user=user

            if 'profile_pic' in request.FILES:
                profile.profile_pic=request.FILES['profile_pic']

            profile.save()

            registered=True

        else:
            print(user_form.errors,profile_form.errors)

    else: #no request=POST yet
        user_form=UserCustomForm()
        profile_form=UserProfileInfoForm()

    return render(request,'taskApp/registration.html',
                            {'user_form':user_form,
                            'profile_form':profile_form,
                            'registered':registered })



def user_login(request):

    if request.method=='POST':
        username=request.POST.get('username')  #name of element
        password=request.POST.get('password')

        user=authenticate(username=username,password=password)

        if user:
            if user.is_active:
                login(request,user)
                return HttpResponseRedirect(reverse('index')) #redirect to home page
            else:
                return HttpResponse("ACCOUNT NOT ACTIVE")

        else:
            print("Someone tried to login and failed!")
            print("Username: {} and password {}".format(username,password))
            return HttpResponse("invalid login details supllied!")

    else:
        return render(request,'taskApp/login.html',{})
卡米利布

您可以使用访问当前用户request.user

...
 if request.method == "POST":
    task_form=UserTaskForm(data=request.POST)
    if task_form.is_valid():

        task=task_form.save(commit=False)
        task.author= request.user
        task.save()

        added=True
...

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有最终用户模型的任务模型

如何将两个字段作为外键添加到表中?

阻止 Django 后台任务删除已完成的任务模型

如何将两个不同的功能作为外键添加到我的 SQL 列中?

如何将类添加到 div 中的当前活动 div

Django:将新外键添加到现有模型中,并将默认值作为同一模型中的另一个外键

如何将新表中的新外键添加到现有记录

如何在多处理器上测试并行实时任务模型的调度算法

如何将列表项作为键添加到 redux 中的对象?

Django:如何将db中的数据以及外键实体作为JSON返回给用户?

如何将值添加到用户已输入键的字典中?

如何将当前查询字符串添加到Django模板中的URL?

如何将产品添加到设计用户模型

如何将新值添加到键中

在 Bootstrap 4 的滑块导航中,如何将“活动”类添加到当前选项卡?

如何使当前用户成为 Django 模型中的外键

Django:使用当前用户作为项目模型的外键

如何将嵌套类别添加到Django模型?

如何将默认数据添加到 django 模型

如何将项目添加到具有对 Android Room 中父实体的外键引用的子实体?

Django:如何将用户添加为模型中的外键

如何将先前在compileJava任务中构建的类添加到当前任务的类路径中

Django,将两个外键添加到同一模型

如何将选项卡式活动添加到导航抽屉活动中?

如何将重复键的值添加到键中:[值数组] 在 Perl 中

如何在 SQL 中查找将外键添加到表中的最早时间

如何自动将外键添加到现有的Rails数据库中?

如何将活动指示器添加到WKWebView(Swift 3)

如何将活动的CSS类添加到Wordpress中的链接