Django OneToOneField是否需要唯一? [英] Does Django OneToOneField needs to be unique?

查看:108
本文介绍了Django OneToOneField是否需要唯一?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到列template_id不是唯一的"错误,现在让我解释一下. 我有一个模板模型和一个播放器版本.

I get a "column template_id is not unique" error, now let me explain. I have a template model and a player version of it.

模板:

class FarmTemplate(models.Model):
    """Template of the "Farm" building"""

    name = models.CharField(max_length=23)
    flavor = models.TextField()
    resource = models.CharField(max_length=23)
    version = models.FloatField(unique=True)

    def __unicode__(self):
        return self.name

我的用户模型:

class Farm(models.Model):
    """Keeps track of Townhall"""

    user = models.ForeignKey(User)
    template = models.OneToOneField(FarmTemplate)
    level = models.IntegerField()

    def __unicode__(self):
        return "User: %s, Farm level: %s" % (self.user, self.level)

当我创建第一个对象时,一切正常,但是,当我创建第二个对象时,它告诉我OneToOneField不是唯一的(这是正确的,因为它使用相同的模板. 但是我不知道为什么这需要独特. 有人可以解释我哪里出了问题吗?

When I create my first object everything goes right, however, when I create a second it tells me the OneToOneField isnt unique (which is correct since it uses the same template. But I have no clue why this needs to be unique.. Can someone please explain where I went wrong?

推荐答案

OnetoOne表示每个元组都是唯一的.我认为您应该使用ForeignKey:

OnetoOne means each tuple is unique. I think you should use ForeignKey:

class Farm(models.Model):
"""Keeps track of Townhall"""

user = models.ForeignKey(User)
template = models.ForeignKey(FarmTemplate)
level = models.IntegerField()

def __unicode__(self):
    return "User: %s, Farm level: %s" % (self.user, self.level)

这篇关于Django OneToOneField是否需要唯一?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆