Django中没有显示多对多关系的外键?

时间:2013-01-08 07:20:48

标签: python django

我有两个这样的简单模型:

class User(models.Model):
    username = models.CharField(max_length=100) #Id is automatically generated by Django
    password = models.CharField(max_length=100)

    def __unicode__(self):
        return self.username

class File(models.Model):
    users = models.ManyToManyField(User)
    file_name = models.CharField(max_length=100)
    type = models.CharField(max_length=10)

使用数据库规则,创建桥实体(表)。我想知道的是在插入数据时我想在我的情况下使用session_id(外键)插入数据库,以便我可以稍后检索以供我使用。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

如果您尝试向ManyToMany Relationships添加数据,则必须使用through选项定义连接表。 Read here了解更多信息。

但是,请注意,您不应该保存会话ID - 您要实现的目标是什么?原因是用户不会总是拥有相同的sessionID,并且可能会删除与会话关联的数据(即request.session [*])。

无论如何,一个例子看起来像这样

class User(models.Model):
    username = models.CharField(max_length=100) #Id is automatically generated by Django
    password = models.CharField(max_length=100)

    def __unicode__(self):
        return self.username

class File(models.Model):
    users = models.ManyToManyField(User, through='UserFile')
    file_name = models.CharField(max_length=100)
    type = models.CharField(max_length=10)


class UserFile(models.Model):
    user = models.ForeignKey(User)
    file = models.ForeignKey(File)
    # Should probably use CharField if you know the length
    session_id = models.TextField()

答案 1 :(得分:0)

根据我对您的问题的理解,您可能需要参考文档的外键部分。 https://docs.djangoproject.com/en/dev/ref/models/fields/

e.g: manufacturer = models.ForeignKey('制造商')