Как сохранить Specifi c пустые поля пользователя, который уже существует в моделях - PullRequest
0 голосов
/ 24 марта 2020

Views.py

Этот мой код, как вы можете видеть в файле views.py, я получаю поля, используя объект запроса. Я мог бы использовать form.save (), но я получаю ошибку. Я хочу сохранить данные этого поля в этой модели пользователя. Пользователь уже существует. Используется UserCreationForm

from django.shortcuts import render
from django.views.generic import TemplateView,CreateView
from auctions.models import User
from auctions import forms
from django.urls import reverse
from django.http import HttpResponseRedirect
from django.urls import reverse_lazy
from django.contrib.auth import settings
from django.contrib import messages
# Create your views here.
#
class HomePage(TemplateView):
    template_name = 'index.html'
    form_class = forms.ProfileSetupForm
    # success_url = reverse_lazy('auctions:profile_update')
    # template_name = 'index.html'
    users =User.objects.all()

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['users'] = self.users
        context['form']=forms.ProfileSetupForm()
        return context

    def post(self, request, *args, **kwargs):
        form = self.form_class(request.POST)
        if form.is_valid():
            address= request.POST['address']
            mobile = request.POST['mobile']
            city =request.POST['city']
            state = request.POST['state']
            birth_date =request.POST['birth_date']
            image=request.FILES['image']
            # file= request.FILES['image']
            user_name=request.POST['user_name']
            pincode = request.POST['pincode']
            print("abc",pincode,user_name,image)
            return HttpResponseRedirect('')



class ThanksPage(TemplateView):
    template_name = 'thanks.html'

forms.py

Здесь, в файле forms.py, два Поля first_name и last_name взяты из auth.models.User. Я предполагаю, что

class ProfileSetupForm(forms.ModelForm):

    # def save(self, commit=True):
    #     user= models.User()

    class Meta():
        fields=('image','first_name','last_name','address','mobile','birth_date','city','state','pincode')
        model=models.User
        # widgets={
        #
        # }

models.py

Здесь auth.models.User наследуются, поэтому лишь немногие поля будут там, которые не написаны как имя, имя пользователя и т. д. c

class User(auth.models.User,auth.models.PermissionsMixin):
    address = models.CharField(max_length=255,default='To be Setup')
    mobile = models.CharField(max_length=13,default='To be Setup')
    birth_date = models.DateField(blank=True)
    pincode = models.IntegerField(default='000000')
    city = models.CharField(max_length=30,default='Place to be Selected.')
    state = models.CharField(max_length=30,default='To be Selected')
    #proof_document= models.FileField()
    image = models.ImageField(upload_to='profile_pics',blank=True)
    profile_setup = models.BooleanField(default=False)

    def __str__(self):
        return '@{}'.format(self.username)

    def get_absolute_url(self):
        return reverse('home',kwargs={'pk':self.pk})  # This represent after doing Comment Where user should redirect

    def save(self,*args,**kwargs):
        super().save(*args,**kwargs)

urls.py

urlpatterns = [
    path('',views.HomePage.as_view(),name='home'),
    path('admin/', admin.site.urls),
    path('auctions/',include('auctions.urls',namespace='auctions')),
    path('thanks/', views.ThanksPage.as_view(), name='thanks'),

]+ static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT

Шаблон: индекс. html

Здесь он проверит, прошла ли аутентификация пользователя, если он, он проверит, был ли установлен профиль пользователя, если нет, заполните форму и данные будут go для класса views.py. Домашняя страница мето пост

{%extends 'base.html'%}
{%load bootstrap4%}

{%block title%}
Welcome To AuctionHouse
{%endblock%}


{%block content%}
    {%if user.is_authenticated%}
        {%for current_user in users%}
            {%ifequal user.username current_user.username%}
                {%ifequal current_user.profile_setup False %}
                <div class="container">
<!--&lt;!&ndash;                    -->
                    <form method="post" enctype="multipart/form-data">
                    {%csrf_token%}
                    {%bootstrap_form form%}
                        <input type="hidden" name="user_name" value="{{user.username}}">
                    <input type="submit" value="Set this a Profile"></form>
                 </div>
                {%endifequal%}
                {%ifequal current_user.profile_setup True %}


               Something

                {% endifequal %}
            {% endifequal %}
        {%endfor%}
    {%else%}
        <p>Not authenticated....</p>
    {%endif%}
{%endblock%}
...