在django中,如果项目包含ForeignKey,为什么get_or_create不起作用

时间:2014-04-02 12:13:47

标签: python django django-models orm django-orm

模型定义如下,Cases具有多关键字ForeignKeyword,

from django.db import models

class Keyword(models.Model):
    name = models.CharField(max_length=32)
    def __unicode__(self):
        return self.name

class Case(models.Model):
    name = models.CharField(max_length=32)
    keywords = models.ForeignKey(Keyword)
    def __unicode__(self):
         return self.name

如果我想使用create get_or_create,它会显示我错过了一个Keyword_id,如下所示:

 case, flag = Case.objects.get_or_create(name = 'case_name', keywords__name = 'keyword_name')

收到了一条消息:

django.db.utils.IntegrityError: dbtest_case.keywords_id may not be NULL

1 个答案:

答案 0 :(得分:2)

您需要首先实例化/ get_or_create Keyword

keyword, _ = Keyword.objects.get_or_create(name='keyword_name')
case, flag = Case.objects.get_or_create(name='case_name', keywords=keyword)

希望对你有用。