-3

col_a、col_b、col_c、col_c の table1 があります。tb_col1、tb_col2、tb_col3 を含む別の table2 があり、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_modelscommissionproduct_models

4

1 に答える 1

0

次のように、sales_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")  
于 2013-10-21T19:46:46.383 に答える