Django Foreignkey问题,

时间:2010-12-20 11:33:31

标签: django

class Service(models.Model)
name = models.CharField("service name", max_length = 20, unique = True)


class Newclass(models.Model):
 service = models.ForeignKey(Services)
 user1 = models.ForeignKey(User)

基本上我想要的是: 对于每个服务,我可以拥有不同的user1,但任何服务都没有重复的user1。 示例

service = 'some'  user1 = 'amit'
service = 'some'   user1 = 'laspal'
service = 'some1'  user1 = 'amit'

那么如何避免这种情况:

   service = 'some'    user1 = 'amit'
   service = 'some'    user1  = 'amit'

我应该在将user1添加到newclass时检查,或者是否有一些我错过的字段,我可以使用Fk()。

感谢。

2 个答案:

答案 0 :(得分:3)

如果您的意思是您不希望2 Newclass个模型与同一服务和user1一起存在,则应使用:

class Newclass(models.Model):
  service = models.ForeignKey(Services)
  user1 = models.ForeignKey(User)

  class Meta:
    unique_together = (('service', 'user1'),)

答案 1 :(得分:2)

您想要unique_together

class Newclass(models.Model):
  service = models.ForeignKey(Services)
  user1 = models.ForeignKey(User)

  class Meta:
    unique_together = ('service', 'user1')

unique_together做了什么(来自the documentation):

  

这是一系列字段列表,这些字段在一起考虑时必须是唯一的。它在Django管理员中使用,并在数据库级别强制执行(即,UNIQUE语句中包含相应的CREATE TABLE语句。