Ömer
Ömer

Reputation: 39

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)

Upvotes: 1

Views: 1907

Answers (1)

kamilyrb
kamilyrb

Reputation: 2627

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.

Upvotes: 1

Related Questions