Python 如何在为具有基于源类字段的约束的类创建FK时避免冗余

Python 如何在为具有基于源类字段的约束的类创建FK时避免冗余,python,class,django-orm,Python,Class,Django Orm,我对编程比较陌生,所以这个问题可能毫无意义(这似乎是一个常见的问题,我试着用谷歌搜索它,但我找不到答案),很抱歉 我使用Django,因此假设我有两个模型类: class SomeClass1(models.Model): some_type = models.CharField(choices=CHOICES, max_length=2) object1_value = models.CharField(max_length=256) class SomeClass2(mod

我对编程比较陌生,所以这个问题可能毫无意义(这似乎是一个常见的问题,我试着用谷歌搜索它,但我找不到答案),很抱歉

我使用Django,因此假设我有两个模型类:

class SomeClass1(models.Model):
    some_type = models.CharField(choices=CHOICES, max_length=2)
    object1_value = models.CharField(max_length=256)

class SomeClass2(models.Model):  
    some_class1 = models.ForeignKey(SomeClass1, blank=True, null=True)
    some_type = models.CharField(choices=CHOICES, max_length=2)
    object2_value = models.CharField(max_length=256)
它们都有“some_type”字段:SomeClass2有这个字段,因为这是它的自然属性,而SomeClass1有一个字段来限制在创建SomeClass2的对象时对“some_class1”字段的选择


这是一个最简单的例子,但我有一大堆这样的例子,还有一些改动。在这个具体示例中,SomeClass1的“some_type”不能用于SomeClass2,因为“some_class1”FK是可选的,但在SomeClass2中必须存在“some_type”。

“SomeClass1在创建SomeClass2的对象时具有限制“some_class1”字段选择的字段”-您能详细说明您在这里试图实现的目标吗?这两个“some_type”字段有什么共同点?它们为什么相关?例如:SomeClass1是方言,SomeClass2是文本,CHOICES是语言列表。创建文本时,必须设置语言,但方言是可选的。再想一想,我明白这不是冗余问题,而是一个完整性问题。我的一些问题转化为:是否有可能以这样的方式设计类,即不可能创建SomeClass2的对象,该对象具有某种类型,不同于SomeClass1的对象,前者具有FK?