在Django中,为什么get_or_create在包含ForeignKey时不起作用
模型定义如下,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 个回答
2
你需要先创建或获取一个 Keyword
对象:
keyword, _ = Keyword.objects.get_or_create(name='keyword_name')
case, flag = Case.objects.get_or_create(name='case_name', keywords=keyword)
希望这对你有帮助。