пустые записи в базе данных, и когда я щелкаю по ним, я получаю ошибку TypeError в / admin / users / personal_detail / 90 / change / __str__, возвращаемую не в виде строки (тип NoneType) - PullRequest
0 голосов
/ 26 февраля 2020

вот так выглядит моя база. html, все работало нормально, пока я не сделал некоторые изменения, добавив jquery

image

вот так моя applyonline. html выглядит как

<body ng-app="">
  {% extends "pmmvyapp/base.html" %}
  {% load crispy_forms_tags %}
  {% load static %}
  {% block content%}
  <div class="col-md-8">
    <form method="post" action="/personal_detail/" enctype="multipart/form-data">
      <div class="group">
        <div class="hide" id="q1">

      </div>
      </div>
</div>
    <div class="hide" id="q2">two</div>
    <div class="hide" id="q3">three</div>
    <div class="hide" id="q4">four</div>
    </div>
    <div style="margin-bottom:10px "> 
    <button id="next">Next</button> <button id="prev">Previous</button>
   </div>
    <button type="submit" class="btn btn-primary" style="margin-bottom:10px ">Submit</button>
  </form>
  </div>    

       <style>
       .hide
       {
         display : none;
        }

       </style>      
  {% endblock %}
  </body>

my settings.py

INSTALLED_APPS = [
    'jquery', 
    'captcha',
    'users.apps.UsersConfig',
    'pmmvyapp.apps.PmmvyappConfig',
    'crispy_forms',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

my models.py, куда я возвращаю одно из имен

class Personal_Detail(models.Model):
    beneficiary_adhaar_name=models.TextField(blank=True, null=True)
    adhaarno=models.IntegerField(blank=True, null=True)
    adhaarcopy = models.FileField(upload_to='adhaar/')


    idcard=models.TextField(blank=True, null=True)
    adhaar_eid=models.IntegerField(blank=True,null=True)    
    beneficiary_id_name=models.TextField(blank=True, null=True)
    idno=models.IntegerField(blank=True, null=True)
    idcopy=models.FileField(upload_to='identitycard/')

    def __str__(self):
        return self.beneficiary_adhaar_name or self.beneficiary_id_name

my views.py

@login_required
def ApplyOnline(request):
    return render(request,'users/applyonline.html')
@login_required
def personal_detail(request):
   # ShowHideExample = request.POST.get('showHideExample',False)
    beneficiary_adhaar_name=request.POST.get('beneficiary_adhaar_name')
    adhaarno=request.POST.get('adhaarno')
    adhaarcopy = request.FILES.get('adhaarcopy')
    idcard=request.POST.get('idcard')
    adhaar_eid=request.POST.get('adhaar_eid')   
    beneficiary_id_name=request.POST.get('beneficiary_id_name')
    idno=request.POST.get('idno')
    idcopy = request.FILES.get('idcopy')
    apply_online = Personal_Detail(beneficiary_adhaar_name=beneficiary_adhaar_name,adhaarno=adhaarno,adhaarcopy=adhaarcopy,
    idcard=idcard,adhaar_eid=adhaar_eid,beneficiary_id_name=beneficiary_id_name,idno=idno,idcopy=idcopy)
    apply_online.save()
    return render(request,'users/applyonline.html')

Я не знаю проблемы, из-за которой это работало нормально, когда вдруг я внес некоторые изменения в запрос для создания многошаговой формы и когда проверил базу данных, я получил несколько нулевых записей и когда я нажал или попытался удалить их, я получил ошибку. Я включил изображение пустых записей, которые я получал. enter image description here

1 Ответ

0 голосов
/ 26 февраля 2020

В основном метод __str__ вашей модели возвращает None. Означает, что оба значения поля - Нет. Вам нужно вернуть строковое значение из этого метода. Например:

class Personal_Detail(models.Model):
    # rest of the code

    def __str__(self):
        return self.beneficiary_adhaar_name or self.beneficiary_id_name or str(self.pk)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...