繁体   English   中英

django.db.utils.IntegrityError:表“Event_event”中主键为“1”的行具有无效的外键:

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

我的事件 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)

和我的 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)

创建测试时出现错误。 session部分应该怎么做? 这是我的测试代码

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. 在 Django APITestCase中,始终为所有测试函数创建新的空数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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