我如何表示和建模这种关系?

时间:2014-09-13 13:23:46

标签: django database-design

所以我有以下逻辑。用户创建交易,该交易包含用户想要的项目和用户拥有的项目。这些有和想要表示为两个独立的多对多关系。

然而,这里是我有点困惑的地方。这些物品可以来自不同的型号。例如,我为特定项目设置了模型,例如具有独特特征的业务项目和工程师项目的第二个模型。现在这些物品都可以在同一行业内交易。

此外,如果我要添加更多代表其他独特贸易项目的模型,我将如何在不对结构或数据进行大修的情况下将其添加到多对多关系中。

例如:

class ItemTrade(models.Model):
    id = models.CharField(max_length=10, primary_key=True)
    user = models.ForeignKey(get_user_model())
    have_items = models.ManyToManyField()
    want_items = models.ManyToManyField()
    num_watch = models.IntegerField(max_length=10)
    num_views = models.IntegerField(max_length=20)

class Model1(models.Model):
    index = models.IntegerField(max_length=20, primary_key=True)
    name = models.CharField(max_length=100)
    type = models.ForeignKey('DotaItemType',null=True,blank=True)

class Model2(models.Model):
    index= models.IntegerField(max_length=20, primary_key=True)
    name = models.CharField(max_length=100)
    type = models.ForeignKey('DotaItemType',null=True,blank=True)
    desc = models.CharField(max_length=20)

每个项目的索引都会重叠,这意味着我还需要使用辅助字段来标识项目所属的模型。表示这种关系的最佳方法是什么?

我能想到的唯一方法是为交易中的每个模型关系建立一个独特的多对多字段,但我不确定这是否是实现此目的的最简单,最有效的方法。

0 个答案:

没有答案