我正在做一个用户提交 ASCII 艺术的 django 项目。我的用户被命名为“艺术家”,他们的创作被命名为“艺术”,如下所示:
class Artist(models.Model):
user = models.OneToOneField(User)
birthday = models.DateField()
name = models.CharField(max_length=100)
def __unicode__(self):
return self.name
class Art(models.Model):
creator = models.ForeignKey(User)
...
def __unicode__(self):
return self.title
(Artist 的 'user' 属性指的是默认的 django User 模型。)
我目前要做的是创建艺术并将当前登录的用户记录为艺术创作者。这是正在执行此操作的视图的片段:
from django.contrib.auth.models import User
def SubmitArt(request):
art = Art(..., creator=request.user)
art.save()
问题在于,这似乎只在我在项目开始时创建的初始超级用户登录时才有效。提交表单完成后,其他所有用户都会给我这个错误:
IntegrityError at /submit/
insert or update on table "artapp_art" violates foreign key constraint "artapp_art_creator_id_fkey"
DETAIL: Key (creator_id)=(3) is not present in table "artapp_artist".
我的模型过去是这样写的:
creator = models.ForeignKey('Artist')
(从来没有工作过)在我用南来改变它们之前。我假设这是我的数据库的问题,但我不确定如何修复它。我在 Windows 7 机器上使用 bitnami djangostack。非常感谢你。