我这里有两个相互关联的模型。我在这里要做的是避免重复。例如,在9年级,他们只能是一个rollno = 32(不能有两个),但是可以在不同年级使用两个相同的卷号。
示例:名称=标记,等级= 9,rollno = 32和名称= Shub,等级= 9,rollno = 32应该是不可能的,但是名称=标记,等级= 9,rollno = 32和名称= Mark,等级= 10,rollno = 32应该可以。
class Grade(models.Model):
grade = models.CharField(max_length=255, primary_key=True)
class Student(models.Model):
name = models.CharField(max_length=255)
grade = models.ForeignKey(grade, on_delete=models.CASCADE)
rollno = models.BigIntegerField()
我不太确定如何添加此功能。 谢谢!
答案 0 :(得分:2)
您需要向模型添加元类。
您的学生模型将如下所示:
class Student(models.Model):
class Meta:
unique_together = ("grade", "rollno")
name = models.CharField(max_length=255)
grade = models.ForeignKey(grade, on_delete=models.CASCADE)
rollno = models.BigIntegerField()
有关django模型的元选项的文档在这里:https://docs.djangoproject.com/en/2.1/ref/models/options/#unique-together
它们真的很有用。
请注意,在变量名称中通常使用下划线和完整的单词。您应该考虑将rollno
更改为roll_number
。
答案 1 :(得分:0)
您需要在类meta中使用unique_together
。
class Student(models.Model):
...
class Meta:
unique_together = ("grade", "rollno")
详细文档可用here