Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python __str_uu返回非字符串(类型NoneType)django_Python_Mysql_Django - Fatal编程技术网

Python __str_uu返回非字符串(类型NoneType)django

Python __str_uu返回非字符串(类型NoneType)django,python,mysql,django,Python,Mysql,Django,我试图在person表中获取输入,但出现此错误。 我已经连接了这两个模型,我正在返回字符串来连接它。有人能告诉我解决方案吗?下面是我的代码 此代码来自models.py from django.db import models class Person(models.Model): PersonID=models.CharField(max_length=30,null=True) Lastname=models.CharField(max_length=30,null=Tru

我试图在person表中获取输入,但出现此错误。 我已经连接了这两个模型,我正在返回字符串来连接它。有人能告诉我解决方案吗?下面是我的代码

此代码来自models.py

from django.db import models

class Person(models.Model):
    PersonID=models.CharField(max_length=30,null=True)
    Lastname=models.CharField(max_length=30,null=True)
    Middlename=models.CharField(max_length=30,null=True)
    Firstname=models.CharField(max_length=30,null=True)
    Initials=models.CharField(max_length=10,null=True)
    Title=models.CharField(max_length=10,null=True)
    Gender=models.CharField(max_length=10,null=True)
    Birthdate=models.DateField(default=None,null=True)

    def __str__(self):
       return self.PersonID
    
    


class Function(models.Model):
    FunctionCode=models.CharField(max_length=30,null=True)
    FunctionName=models.CharField(max_length=30,null=True)
    MinSalary=models.IntegerField(null=True)
    MaxSalary=models.IntegerField(null=True)
    DefaultBillingRate=models.CharField(max_length=30,null=True)

    def __str__(self):
       return self.FunctionCode
此代码来自表单

from django.forms import ModelForm
from .models import Person

class PersonForm(ModelForm):
    class Meta:
        model = Person
        fields = '__all__'

此代码来自视图

from django.shortcuts import render
from .forms import Person
from .models import *


def createPerson(request):
    form = Person()

    context = {'form':form}
    return render(request, 'create_person.html', context )
此代码来自person.html

{% extends 'main.html' %}
{% load static %}
{% block content %}

<form action="" method="POST">
    {% csrf_token %}
    {{form}}
    
    <input type="submit" name="Submit">
</form>


{% endblock %}
{%extends'main.html%}
{%load static%}
{%block content%}
{%csrf_令牌%}
{{form}}
{%endblock%}

如您所见,您的
函数code
可以为空。
您的
\uuu str\uuu
方法应该只返回字符串,但是当
FunctionCode
为空时,它将返回
None
而不是
string

您可以返回不可为空的字段,也可以这样做

def __str__(self):
    if self.FunctionCode is not None:
        return self.FunctionCode
    return "Unknown"

在这两种模型中,str方法返回的字段可以为空,您必须建立一个条件

例如: 模型->人

  def __str__(self):
    if self.PersonID is not None:
      return self.PersonID
    return "Custom String"
模型->功能

  def __str__(self):
    if self.FunctionCode is not None:
      return self.FunctionCode
    return "Custom String"
如果字段可以是None(null=True),则
\uuu str\uu
方法可以返回None。你应该防止这种情况:

def\uuuu str\uuuuuu(自):
返回self.field或“”

如果字段值不是None,则返回该字段的值,否则返回空字符串。

这些字段上有
null=True
,因此在某些实例中,这些值是
null
,因此
\u str\u
返回
None
。注意:您的所有字段都有
null=True
??请研究一下如何设计一个好的数据库模式(通常会尝试避免空值),你能建议我在这里写什么来代替null=true PersonID=models.CharField(max_length=30,null=true)我在视图中得到的解决方案form=Person()应该是Personform()我在html页面上看到一个未知的句子,但我想输入personid、lastname、middlename的值。。那边