简体   繁体   中英

django.db.utils.IntegrityError: The row in table 'Event_event' with primary key '1' has an invalid foreign key:

my Event Model

class Event(models.Model):
    name = models.CharField(max_length=100)
    start_date = models.DateField()
    end_date = models.DateField()
    TIMEZONES = tuple(zip(pytz.all_timezones, pytz.all_timezones))
    timezone = models.CharField(max_length=32, choices=TIMEZONES)
    session=models.ForeignKey(Session,on_delete=models.CASCADE)
    slug = models.SlugField(unique=True, editable=False, max_length=100)

and my session model

class Session(models.Model):
    name=models.CharField(max_length=100)
    start_date=models.DateField()
    end_date=models.DateField()
    speaker=models.CharField(max_length=100)
    slug = models.SlugField(unique=True, editable=False, max_length=100)

I get an error when I create a test. What should I do in the session section? this is my test code

class CreateTest(APITestCase):
    def test_create_event(self):
        url = 'http://127.0.0.1:8000/api/event/create'
        data = Event.objects.create(
            name="deneme 5",
            start_date="2020-05-23",
            end_date="2020-05-26",
            timezone="Etc/GMT",
            session_id='1'
            )
        response = self.client.post(url,data)
        self.assertEqual(response.status_code, status.HTTP_201_CREATED)

You get this error because, you haven't any Session record which has id 1. You must create Session object before create Event object and provide this created session id to event object. In Django APITestCase , new empty database is created for all test functions all time.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM