没有主要和唯一字段的Django模型

时间:2014-01-24 12:32:31

标签: python django

我有一个数据库表:

  url_id( INT(11) )  |   monitor_id( (INT(11) )
 --------------------+--------------------------
        1            |         1
        1            |         2
        1            |         3
        2            |         2

等等。 url_idmonitor_id字段都不是唯一的,更重要的是,它们是其他表的外键(表urls和表monitors)。所以我不能改变数据库结构。在我的Django模型文件中,我为此表创建了一个模型类:

class MonitorForUrl(models.Model):
    url = models.ForeignKey(Url, primary_key=True)
    monitor = models.ForeignKey(Monitor)

    class Meta:
        db_table = 'monitors_for_url'

我将primary_key参数设置为true,因为如果我没有设置自己的主键字段,Django会为主键创建默认的*model_name*_id字段。 DB中没有这样的字段,因此我将primary_key设置为true。通过这种方式,我无法创建一些具有类似url_id值的行,因为它是主键。我可以告诉Django在没有设置primary_key选项的情况下不创建默认主键字段,或者您可以建议我一些其他方法来解决我的问题吗?

1 个答案:

答案 0 :(得分:1)

不要为此创建模型。而是在Url和Monitor模型中添加many-to-many relation

然后Django会为你维护这个中间表。