让我们看看第一个应用程序(非常简单)
app name = family;机型:
class Parent(models.Model):
name = models.CharFiled(max_length="30")
title = models.CharField(max_length="30")
work_title = models.CharField(max_length="30")
class Child(models.Model):
name = models.CharField(max_length="30")
school_year = models.IntegerField(max_length="30")
然后我有另一个应用程序,需要根据用户选择为家庭应用程序中的2个类创建一个foregin键,让我们看看下一个示例:
app name = persons,models:
class Info(models.Model):
code = models.CharField(max_length="30")
family_member = models.CharField(max_length="1", choices=(('1', 'Parent'),('2', 'Child'),))
person = models.ForeignKey('family.???') #here is where I have the issue
如何根据family_member中的用户选择构建ForeignKey?因此,如果用户选择Parent(1),则ForeignKey应指向Parrent类,但如果用户选择Child(2),则foreignKey应指向Child
我想在models.py中搜索解决方案,而不是在视图中修复问题 - 如果可能的话。
答案 0 :(得分:0)
您可能希望将GenericForeignKey
用于该任务。请参阅the docs。
答案 1 :(得分:0)
您可以从一个类继承Parent和Child,并使外键指向它:
class Person(models.Model):
name = models.CharField(max_length="30")
class Parent(Person):
title = models.CharField(max_length="30")
work_title = models.CharField(max_length="30")
class Child(Person):
school_year = models.IntegerField(max_length="30")
和人:
class Info(models.Model):
code = models.CharField(max_length="30")
family_member = models.CharField(max_length="1", choices=(('1', 'Parent'),('2', 'Child'),))
person = models.ForeignKey('family.Person')
虽然在这种情况下,用户可以独立于family_member选择选择子级或父级,除非您过滤用户的选择,例如,如果他选择family_member'Child',则只允许他选择Child模型对象,反之亦然