未定义 Django CharField

Usm*_*ill 1 python django django-models

from django.db import models

class Pet(models.Model):
    SEX_CHOICES = [('M','Male'), ('F', 'Female')]
    name = CharField(max_length=100)
    submitter = CharField(max_length=100)
    species = CharField(max_length=30)
    breed = CharField(max_length=30, blank=True)
    description = models.TextField()
    sex = models.CharField(choices=SEX_CHOICES, max_length=1, blank=True)
    submission_date = models.DateTimeField()
    age = models.IntegerField(null=True)
    vaccinations = models.ManyToManyField('Vaccine', blank=True)


class Vaccine(models.Model):
    name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)

使用此代码,我在运行“python manage.py makemigrations”时收到命令行错误。名称“CharField”未定义。

如何修复它。

JPG*_*JPG 5

您应该将CharField类添加到模块导入中,即

from django.db import models
from django.db.models import CharField
Run Code Online (Sandbox Code Playgroud)



但是,这不是在项目中导入模块的正确方法。所以改变你的models.py如下,

from django.db import models

class Pet(models.Model):
    SEX_CHOICES = [('M','Male'), ('F', 'Female')]
    name = models.CharField(max_length=100)
    submitter = models.CharField(max_length=100)
    species = models.CharField(max_length=30)
    breed = models.CharField(max_length=30, blank=True)
    description = models.TextField()
    sex = models.CharField(choices=SEX_CHOICES, max_length=1, blank=True)
    submission_date = models.DateTimeField()
    age = models.IntegerField(null=True)
    vaccinations = models.ManyToManyField('Vaccine', blank=True)


class Vaccine(models.Model):
    name = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)