Wednesday, 25 July 2018

How to count no of child create on parent model??

Step 1 : make child mode with apply Foreign Key on child model with parent model
ex:
first model
class Poll(models.Model):
    poll_id = models.AutoField(primary_key=True)

second model
class Questions(models.Model):
    poll = models.ForeignKey(Poll, models.DO_NOTHING, db_column='poll', blank=True, null=True, related_name="poll")

In poll template:

{{ p.poll.count }}

Friday, 20 July 2018

How to call api in client side with filter

<button type="submit" onclick="UserAction()">Search</button>


unction UserAction() {
           
           $.ajax({
               type: 'GET',
               url: 'http://127.0.0.1:8000/api/project/?industry_sector=Automobiles&location=State',
               success: function(res){
                       console.log(res)
                       $.ajaxSetup({
                          headers: {
                            "token": res.token
                          }
                       });
               },
               error: function(error) {
                   callbackErr(error,self)
               }
           })
      }

Thursday, 12 July 2018

How to add another serializer in one serializer

class QuestionListSerializer(serializers.ModelSerializer):
    answer_list = AnswersSerializer(many=True, read_only=False)

    class Meta:
        model = Questions
        fields = ['id', 'q_type', 'question', 'other', 'random', 'skip', 'answer_list']

custom django admin user api

class UserSerializer(serializers.ModelSerializer):

    contact = serializers.CharField(source='userdetails.contact')
    project_code = serializers.CharField(source='userdetails.project_code')
    profile_pic = serializers.FileField(source='userdetails.profile_pic', required=False)
    address = serializers.CharField(source='userdetails.address', required=False)
    video = serializers.FileField(source='userdetails.video', required=False)
    # gender = serializers.CharField(source='userdetails.gender', required=False)
    gender = serializers.ChoiceField(source='userdetails.gender',
    choices=['Male', 'Female']
)
    language = serializers.CharField(source='userdetails.language', required=False)
    dob = serializers.DateField(source='userdetails.dob', required=False)
    education = serializers.CharField(source='userdetails.education', required=False)
    language = serializers.CharField(source='userdetails.language', required=False)
    country = serializers.CharField(source='userdetails.country', required=False)
    profession = serializers.CharField(source='userdetails.profession', required=False)
    city = serializers.CharField(source='userdetails.city', required=False)

    class Meta:
        model = User
        fields = ('id', 'username', 'first_name', 'last_name', 'email', 'city', 'contact', 'project_code', 'profile_pic', 'address',
            'video', 'gender', 'language', 'dob', 'education', 'language', 'country', 'profession')

    def create(self, validated_data):
        profile_data = validated_data.pop('userdetails')
        user = User(
            email=validated_data['email'],
            username =validated_data['username'],
            first_name =validated_data['first_name'],
            last_name =validated_data['last_name'],
        )
        user.save()
        print user.id
        print user.username
        print user.first_name
        print user.last_name
        print user.email
       
        project_code = profile_data.get('project_code')
        contact = profile_data.get('contact')
        address = profile_data.get('address')
        dob = profile_data.get('dob')
        profile_pic = profile_data.get('profile_pic')
        video = profile_data.get('video')
        age = profile_data.get('age')
        education = profile_data.get('education')
        city = profile_data.get('city')
        profession = profile_data.get('profession')
        country = profile_data.get('country')
        gender = profile_data.get('gender')
        language = profile_data.get('language')
        domain = 'mobile'
        user.id = user.id
        UserDetails.objects.create(address=address, contact=contact, user_id=user.id, project_code=project_code,dob=dob, profile_pic=profile_pic, video=video, age=age
                              , education=education, city=city, profession=profession, country=country, gender=gender,language=language , domain=domain)
        return user

How to set session in django

request.session['form_data'] = form_data

How to display error or success in django

from django.contrib import messages

messages.success(request, "login success.")
or
messages.warning(request, "Please enter Valid Username and Password.")


write below code in template

{% if messages %}
                    {% for message in messages %}
                        <div class="alert alert-success">
                            <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                                <strong> {{ message|escape }}</strong>
                            </div>
                    {% endfor %}
                {% endif %}

Fetch session value in django

project_code = request.session['project_code']
print project_code

Django view for form factory

def create_question(request, poll_id):
    queryset = Poll.objects.filter(poll_id=poll_id)
    project_code = request.session['project_code']
    if request.POST:
        form = QuestionForm(request.POST)
        AnswersFormSet = formset_factory(AnswersForm)
        formset = AnswersFormSet(request.POST)
        if form.is_valid() and formset.is_valid():

            obj = form.save(commit=True)
            obj.project_code = Project.objects.get(project_code=project_code)
            obj.poll = Poll.objects.get(poll_id=poll_id)
            obj.save()
            for frm in formset:
                try:
                    if frm.is_valid():
                        print frm
                        s = Answers()
                        s.question_id =  obj.id
                        s.answer = frm.cleaned_data['answer']
                        s.save()

                except KeyError:
                    pass
            messages.success(request, 'Question create successfully')
            return redirect('screencultures:question_list',poll_id)
        else:
            return render(request, 'create_question.html', {'formset':formset, 'form': form, 'project_code': project_code, 'queryset': queryset, 'poll_id': poll_id})
    else:
        formset = formset_factory(form=AnswersForm, extra=9)
        form = QuestionForm()
        return render(request, 'create_question.html', {'form': form, 'project_code': project_code, 'queryset': queryset, 'poll_id': poll_id, 'formset' : formset})

How to customize django admin user panel with model

def registration(request):
    project_code = request.session['project_code']
    if request.POST:
        user_form = UserForm(request.POST)
        vendor_form = UserDetailsForm(request.POST, request.FILES)
        print vendor_form
        if user_form.is_valid() and vendor_form.is_valid():
                if(User.objects.filter(username = user_form.cleaned_data['username']).exists()):
                    messages.warning(request, 'username already exists with same name')
                    return render(request, 'registration.html', {'user_form': user_form, 'vendor_form': vendor_form})

                if (User.objects.filter(email=user_form.cleaned_data['email']).exists()):
                    messages.warning(request, 'Email already exists with same email')
                    return render(request, 'registration.html', {'user_form': user_form, 'vendor_form': vendor_form})
                obj = user_form.save()
                vendor = UserDetails()
                vendor.user_id = obj.id
                vendor.address= vendor_form.cleaned_data['address']
                vendor.contact = vendor_form.cleaned_data['contact']
                vendor.dob = vendor_form.cleaned_data['dob']
                vendor.profile_pic = vendor_form.cleaned_data['profile_pic']
                vendor.video = vendor_form.cleaned_data['video']
                vendor.age = vendor_form.cleaned_data['age']
                vendor.city = vendor_form.cleaned_data['city']
                vendor.profession = vendor_form.cleaned_data['profession']
                vendor.country = vendor_form.cleaned_data['country']
                vendor.gender = vendor_form.cleaned_data['gender']
                vendor.language = vendor_form.cleaned_data['language']
                vendor.education = vendor_form.cleaned_data['education']
                vendor.project_code = project_code
                vendor.domain = 'admin'
                val = UserDetails.objects.filter(contact=vendor.contact, project_code=project_code)
                vendor.save()
                messages.warning(request, 'User  added successfully')
                return redirect('screencultures:home')
        else:
            messages.warning(request, 'Please enter Valid username and emailid')
            return render(request, 'registration.html', {'user_form': user_form, 'vendor_form': vendor_form ,'id': id, 'project_code' : project_code })
    else:
        user_form = UserForm()
        vendor_form = UserDetailsForm()
        return render(request, 'registration.html', {'user_form': user_form, 'vendor_form':vendor_form, 'id': id, 'project_code' : project_code})

Django rest api - filter

views.py from django_filters.rest_framework import DjangoFilterBackend class PollList(viewsets.ModelViewSet):     queryset = X.objects...