我有一个table1,其中包含col_a,col_b,col_c,col_c。我有另一个table2,tb_col1,tb_col2,tb_col3,我想引用col_a - > tb_col,col_b - > tb_col2,col_c - > tb_col3。
我应该使用复合键,如果是这样,我如何在Django(python)
中实现它我的模特:
class product_models(models.Model):
products = models.ForeignKey('products')
model_name = models.CharField(max_length=50)
model_price = models.IntegerField(max_length=4)
model_desc = models.TextField(blank=True)
commision = models.IntegerField(max_length=3)
def __unicode__(self):
return self.model_name
class sales_process(models.Model):
prospect = models.ForeignKey('prospect')
employee = models.ForeignKey(User)
first_call = models.DateTimeField
product = models.ForeignKey('products')
model_name = models.ForeignKey('product_models')
#price = reference to product_model for the price
#commission = reference to product_model for commission
我如何将price
引用至product_models
和commission
至product_models
答案 0 :(得分:0)
为什么不将product_process与product_models相关联:
product_model = models.ForeignKey('product_models')
不需要在sales_process模型上复制product_models中的多个列吗?
另外,请看一下自定义模型管理器: https://docs.djangoproject.com/en/dev/topics/db/managers/
您可以在模型上创建便捷方法(以便从相关模型中查找内容)。
在下面的示例中,您可以调用Team.objects.get(pk = 1).games()返回团队的所有游戏,无论是回家还是离开。
class TeamManager(models.Manager):
def games(self, name):
return Game.objects.filter(home__name=name) | Game.objects.filter(away__name=name)
class Team(models.Model):
objects = TeamManager()
name = models.CharField(max_length=100, unique=True)
class Game(models.Model):
away = models.ForeignKey(Team, null=True, blank=True, related_name="away")
home = models.ForeignKey(Team, null=True, blank=True, related_name="home")