我有一个DB表:
url_id( INT(11) ) | monitor_id( (INT(11) )
--------------------+--------------------------
1 | 1
1 | 2
1 | 3
2 | 2
url_id
和monitor_id
字段都不是唯一的,而且它们是其他表(表urls
和表monitors
)的外键,所以我不能改变DB结构,在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
选项的情况下不要创建默认的主键字段吗,或者你可以建议我一些其他的方法来解决我的问题?
2条答案
按热度按时间luaexgnf1#
不要为此创建模型,而是在Url和Monitor模型中添加一个many-to-many relation。
Django会为你维护这个中间表。
daolsyd02#
你可能想创建复合主键,但是django不支持:https://code.djangoproject.com/wiki/MultipleColumnPrimaryKeys
您可以做的是让它创建id字段,但也添加唯一约束,如下所示:
这两个字段都不是唯一的,但字段的组合是唯一的。