Django主键id映射

时间:2013-10-21 11:58:12

标签: django django-models

我有一个如下所示的模型/

class UserWidgetMapping(models.Model):
    user = models.ForeignKey(AuthUser)
    widget_string = models.CharField(max_length=600L)
    class Meta:
        db_table = 'user_widget_mapping'

当我执行查询user_widgets = UserWidgetMapping.objects.filter(user_id = user_id)时,会抛出错误(1054, "Unknown column 'user_widget_mapping.id' in 'field list'")。我知道Django会自动为模型分配一个id,但我不想在这个模型中使用id。为此,我需要提供一个属性primarykey = True。但是,由于外键成为其自身tablt的主键,我该如何执行此查询?

1 个答案:

答案 0 :(得分:0)

为什么不想要身份证?将ForeignKey作为主键是没有意义的,因为它不是唯一的:外键的关键在于它是多对一的关系,因此许多UserWidgetMappings可以指向相同的AuthUser,因此具有相同的值为user_id。如果你不想这样,你或许应该使用OneToOneField。

我不明白您对该查询的其他问题:如果您将primary_key=True属性赋予user,我无法理解为什么会发生任何变化。