Django - 提交表单后无法在管理员中检索用户名

蜘蛛侠677

我有一个表单,当用户提交表单时,我需要当前登录的用户自动填充到 django 管理员中。我希望当前用户的用户名填充在它User在 django 管理员中所说的列中附上截图。

如何使用当前代码正确执行该操作?

from users.models import CustomUser如果有帮助,我正在使用的自定义用户模型位于

我很高兴得到任何帮助,干杯

在此处输入图片说明

user_profile/admin.py

from django.contrib import admin
from django.contrib.auth import get_user_model
from django.contrib.auth.admin import UserAdmin


from user_profile.forms import HomeForm
from users.forms import CustomUserCreationForm, CustomUserChangeForm

from user_profile.models import Listing
from users.models import CustomUser


# Register models here.

class UserProfileAdmin(admin.ModelAdmin):
    list_display = ['name', 'address', 'zip_code', 'mobile_number', 'created', 'updated', 'get_username']
    list_filter = ['name', 'zip_code', 'created', 'updated',]

    def get_username(self, obj):
        if obj.user is not None:
            return obj.user.username
        return '-'
    get_username.short_description = 'User'

admin.site.register(Listing, UserProfileAdmin)


#user_profile/models
from django.contrib import auth
from django.db import models
from django.urls import reverse
from django.contrib.auth.models import AbstractUser, UserManager
from django.contrib.auth.models import BaseUserManager
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.conf import settings
from users.forms import CustomUserCreationForm, CustomUserChangeForm
from users.models import CustomUser

class Listing (models.Model):

#    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, null=True, on_delete=models.CASCADE)
    created =  models.DateTimeField(auto_now_add=True, null=True)
    updated = models.DateTimeField(auto_now=True)
    name = models.CharField(max_length=100)
    address = models.CharField(max_length=100)
    zip_code = models.CharField(max_length=100)
    mobile_number = models.CharField(max_length=100)
#    cc_number = models.CharField(max_length=100)
#    cc_expiration = models.CharField(max_length=100)
#    cc_cvv = models.CharField(max_length=100)
#    objects = ListingManager()

    def get_username(self):
        return self.user.username

def create_profile(sender, **kwargs):
    if kwargs['created']:
        user_profile = Listing.objects.create(user=kwargs['instance'])

post_save.connect(create_profile, sender=CustomUser)

user_profile/views.py

from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, redirect
from django.conf import settings
from django.views.generic.edit import FormView
from django.views.generic.edit import UpdateView
from django.views.generic import TemplateView
from .forms import HomeForm
from users.forms import CustomUserCreationForm, CustomUserChangeForm
from .models import Listing
from users.models import CustomUser
from django.urls import reverse_lazy
from django.utils import six
from django.utils.translation import ugettext as _
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from avatar.forms import PrimaryAvatarForm, DeleteAvatarForm, UploadAvatarForm
from avatar.models import Avatar
from avatar.signals import avatar_updated, avatar_deleted
from avatar.utils import (get_primary_avatar, get_default_avatar_url,
                          invalidate_cache)


def change_view(request):
    form = HomeForm(request.POST or None)
    user_profile = Listing.objects.all
    user = request.user

    if form.is_valid():
        form.save()
        form = HomeForm()

    context = {
        'form': form, 'user_profile': user_profile 
    }

    return render(request, "myaccount.html", context)

user_profile/forms.py

import os

from django import forms
from django.forms import ModelForm

from django.forms import widgets
from django.utils import six
from django.utils.safestring import mark_safe
from django.utils.translation import ugettext_lazy as _
from django.template.defaultfilters import filesizeformat

from avatar.conf import settings
from avatar.models import Avatar
from .models import Listing


class HomeForm(forms.ModelForm):

#    user = forms.CharField(required=False, label='', max_length=100,  widget=forms.TextInput(attrs={'placeholder': 'CVV', 'class': 'form-control'}))
    created = forms.CharField(required=False, label='', max_length=100,  widget=forms.TextInput(attrs={'placeholder': 'CVV', 'class': 'form-control'}))    
    name = forms.CharField(required=False, label='', max_length=100,  widget=forms.TextInput(attrs={'placeholder': 'Full Name', 'class': 'form-control'}))
    address = forms.CharField(required=False, label='', max_length=100,  widget=forms.TextInput(attrs={'placeholder': 'Address', 'class': 'form-control'}))
    zip_code = forms.CharField(required=False, label='', max_length=100,  widget=forms.TextInput(attrs={'placeholder': 'Zipcode', 'class': 'form-control'}))
    mobile_number = forms.CharField(required=False, label='', max_length=100,  widget=forms.TextInput(attrs={'placeholder': 'Mobile Number', 'class': 'form-control'}))
    cc_number = forms.CharField(required=False, label='', max_length=100,  widget=forms.TextInput(attrs={'placeholder': 'Credit Card', 'class': 'form-control'}))
    cc_expiration = forms.CharField(required=False, label='', max_length=100,  widget=forms.TextInput(attrs={'placeholder': 'Expiration Date', 'class': 'form-control'}))
    cc_cvv = forms.CharField(required=False, label='', max_length=100,  widget=forms.TextInput(attrs={'placeholder': 'CVV', 'class': 'form-control'}))

    class Meta:
        model = Listing
        fields = ['name', 'address', 'zip_code', 'mobile_number']

html

 <form role="form" action="" method="post">
{% csrf_token %}
{{ form.errors }}   
{{ form.name }}
{{ form.address }}
{{ form.zip_code }}
{{ form.mobile_number }}
<button class="btn btn-primary btn-success btn-round btn-extend" type="submit" value="Submit"><i class="zmdi zmdi-favorite-outline6"></i>Submit</button>
</form> 

设置

AUTH_USER_MODEL = 'users.CustomUser'
JPG

免责声明:我不确定您的代码是否正确。如果它工作正常,这也很好:)

def change_view(request):
    form = HomeForm(request.POST or None)
    user_profile = Listing.objects.all
    user = request.user

    if form.is_valid():
        listing_instance = form.save()  # "this will return the 'Listing' instance"
        listing_instance.user = user # assign 'user' instance
        listing_instance.save() # calling 'save()' method of model
        form = HomeForm()

    context = {
        'form': form, 'user_profile': user_profile
    }

    return render(request, "myaccount.html", context)

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Django管理员编辑用户表单中删除/隐藏用户名字段

无法使用正确的用户名和密码登录Django管理员

管理员搜索时出现Django错误:无法将关键字“用户名”解析为字段

Django项目如何查找管理员用户名和密码

覆盖Django管理员中的表单

如果用户没有用户名或其他名称,返回到django管理员的内容

Django管理员:在django中获取登录的用户ID

当用户提交表单时,Django博客会向管理员发送电子邮件

Django错误admin.E033:用户名不是users.CustomUser的属性。为什么我的自定义用户管理员不起作用?

无法输入密码。(创建Django管理员超级用户)

Django 1.9表单包含未在管理员中显示

无法从用户上传图片,但可以从Django中的管理员上传

OpenShift Django git push不提供管理员用户名和密码-“一切都是最新的”

Django-管理员-更改表单

无法再访问 django 管理员

Django管理员自定义表单提交强制从下拉列表中选择操作

Django管理员中的模型

在Django管理员中编码

在Django管理员中更改列名

如何在Django管理员中输入一定数量后限制管理员输入?

格式错误的数据包:Django管理员嵌套表格无法提交,连接已重置

在URL中显示用户名-Django

迎合加号Django中的用户名

Django DeleteUser的URL中的用户名

安装django 1.9后Django应用未在管理员中显示

使用 Django 管理员用户表单添加内联用户配置文件表单时出现问题

将登录用户的用户名作为 Django 表单字段中的标签

无法使用有效的用户名和密码登录django管理页面

无法使用有效的用户名和密码登录django管理页面