在django中可以有多个外键吗?但是使用OR运算符vs和

在django中可以有多个外键吗?但是使用OR运算符vs和,django,django-models,django-admin,Django,Django Models,Django Admin,我有不同表格中的参赛者,我正在创建一个分数表,我想做的是在分数表和参赛者表之间设置一个外键,但是对于每个分数,必须有一个人来自两个表格中的一个,而不是两个。这是可能的吗 型号: class Couples_Round_1(models.Model): event = models.ForeignKey(comp_name, blank=True) dancer_1_fname = models.CharField('Dancer 1 First Name', max_

我有不同表格中的参赛者,我正在创建一个分数表,我想做的是在分数表和参赛者表之间设置一个外键,但是对于每个分数,必须有一个人来自两个表格中的一个,而不是两个。这是可能的吗

型号:

 class Couples_Round_1(models.Model):


     event = models.ForeignKey(comp_name, blank=True)

     dancer_1_fname = models.CharField('Dancer 1 First Name', max_length = 30)
     dancer_1_lname = models.CharField('Dancer 1 Last Name', max_length = 30)


class Couples_Round_2(models.Model):


     event = models.ForeignKey(comp_name, blank=True)

     dancer_1_fname = models.CharField('Dancer 1 First Name', max_length = 30)
     dancer_1_lname = models.CharField('Dancer 1 Last Name', max_length = 30)

class score (models.Model
     contestant = models.Foreignkey(round1, round2?????)
     judge = models.Foreignkey(judges)
     score1 = models.integerfield()

您可能没有多个外键。但是,实现这一点的一种方法是,您可以使用两个单独的外键,并在应用程序级别处理数据验证

例如:

class score (models.Model
     contestant_r1 = models.Foreignkey(round1, null=True)
     contestant_r2 = models.Foreignkey(round2, null=True)
     judge = models.Foreignkey(judges)
     score1 = models.integerfield()
现在,您还可以处理逻辑-示例
r1
r2
都是必需的,或者是必需的,等等

我会重新考虑模型

class Couples_Round(models.Model):
     round = models.IntegerField()    
     event = models.ForeignKey(comp_name, blank=True)

     dancer_1_fname = models.CharField('Dancer 1 First Name', max_length = 30)
     dancer_1_lname = models.CharField('Dancer 1 Last Name', max_length = 30)
     score = models.Foreignkey('score')
并通过反向关系指出这些:

class score(models.Model):
    judge = models.Foreignkey(judges)
    score1 = models.integerfield()

你能展示一下你现在的型号吗?谢谢。好的,我添加了我的型号通用外键解决了这个问题: