Django I';我在测试模型时遇到了一个奇怪的错误

Django I';我在测试模型时遇到了一个奇怪的错误,django,django-models,Django,Django Models,我有两个模型,我正试图编写一些测试,但只有在添加第二个测试存根时才会出错 错误 Creating test database for alias 'default'... System check identified no issues (0 silenced). ..E ====================================================================== ERROR: test_project_details (projects.tes

我有两个模型,我正试图编写一些测试,但只有在添加第二个测试存根时才会出错

错误

Creating test database for alias 'default'...
System check identified no issues (0 silenced).
..E
======================================================================
ERROR: test_project_details (projects.tests.ModelTest)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/Users/chriscummings/Desktop/avenue/projects/tests.py", line 27, in test_project_details
    project = Project.objects.get(pk=1)
  File "/Users/chriscummings/.local/share/virtualenvs/avenue-5F5WKxqz/lib/python3.8/site-packages/django/db/models/manager.py", line 85, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
  File "/Users/chriscummings/.local/share/virtualenvs/avenue-5F5WKxqz/lib/python3.8/site-packages/django/db/models/query.py", line 435, in get
    raise self.model.DoesNotExist(
projects.models.Project.DoesNotExist: Project matching query does not exist.

----------------------------------------------------------------------
Ran 3 tests in 0.292s
测试

from django.test import TestCase
from .models import Project, Parcel


class ModelTest(TestCase):

    def setUp(self):
        self.project_details = {
            'code': 'P0023213',
            'state': 'SC',
            'county': 'Lexington/Richland',
            'description': 'A road widening.'
        }
        self.project = Project(**self.project_details)
        self.project.save()

        self.parcel_details = {
            'code': '00342-34-244',
            'owner': 'John Smith Inc.',
            'site_address': '123 Main St',
            'mailing_address': 'P.O. Box 42353'
        }
        self.parcel = Parcel(**self.parcel_details)
        self.parcel.save()

    def test_project_details(self):
        project = Project.objects.get(pk=1)

        self.assertEqual(project.code, self.project_details['code'])
        self.assertEqual(project.state, self.project_details['state'])
        self.assertEqual(project.county, self.project_details['county'])
        self.assertEqual(project.description, self.project_details['description'])
        print(project.description) # Prints fine if I comment out the next test.


    def test_parcel_details(self): # Commenting this out makes error go away.
        self.assertEqual(0,0)
from django.db import models
from django.contrib.auth import get_user_model
from django.urls import reverse

class Project(models.Model):
    code = models.CharField(max_length=50)
    state = models.CharField(max_length=4)
    county = models.CharField(max_length=50)
    description = models.CharField(max_length=255)
    # users


class Parcel(models.Model):
    code = models.CharField(max_length=50)
    owner = models.CharField(max_length=255)
    site_address = models.CharField(max_length=255)
    mailing_address = models.CharField(max_length=255)
    project = models.ForeignKey(Project, on_delete=models.CASCADE, null=True)
型号

from django.test import TestCase
from .models import Project, Parcel


class ModelTest(TestCase):

    def setUp(self):
        self.project_details = {
            'code': 'P0023213',
            'state': 'SC',
            'county': 'Lexington/Richland',
            'description': 'A road widening.'
        }
        self.project = Project(**self.project_details)
        self.project.save()

        self.parcel_details = {
            'code': '00342-34-244',
            'owner': 'John Smith Inc.',
            'site_address': '123 Main St',
            'mailing_address': 'P.O. Box 42353'
        }
        self.parcel = Parcel(**self.parcel_details)
        self.parcel.save()

    def test_project_details(self):
        project = Project.objects.get(pk=1)

        self.assertEqual(project.code, self.project_details['code'])
        self.assertEqual(project.state, self.project_details['state'])
        self.assertEqual(project.county, self.project_details['county'])
        self.assertEqual(project.description, self.project_details['description'])
        print(project.description) # Prints fine if I comment out the next test.


    def test_parcel_details(self): # Commenting this out makes error go away.
        self.assertEqual(0,0)
from django.db import models
from django.contrib.auth import get_user_model
from django.urls import reverse

class Project(models.Model):
    code = models.CharField(max_length=50)
    state = models.CharField(max_length=4)
    county = models.CharField(max_length=50)
    description = models.CharField(max_length=255)
    # users


class Parcel(models.Model):
    code = models.CharField(max_length=50)
    owner = models.CharField(max_length=255)
    site_address = models.CharField(max_length=255)
    mailing_address = models.CharField(max_length=255)
    project = models.ForeignKey(Project, on_delete=models.CASCADE, null=True)

尝试使用
self.project.id
或使用id代替pk


或者使用
Project.objects.create
method和必要的字段来实现。我得到“未检测到任何更改”和“未应用任何迁移”。请尝试使用
self.project.id
或使用id代替pk。这似乎有效。。。但似乎设置方法并没有回滚测试之间的更改。正确的PK是2,这取决于先运行哪个测试。是的,它不会回滚测试之间的更改。