django - 使用主键作为属性

时间:2013-11-30 17:13:41

标签: django django-models

这可能是一个蹩脚的问题,但我如何使用主键作为属性的默认值?

这是我的models.py:

class Thread(models.Model):
    thread_pk = models.PositiveIntegerField(default=self.pk)

这给了我一个错误:

  

自我未定义

如何将pk用作属性?任何帮助将不胜感激。谢谢。

修改

我需要在另一个班级Thread中使用ForeignKey班级作为Message。所以我需要一个具有每个线程默认值的属性。

修改

class ThreadParticipant(models.Model):
    thread = models.ForeignKey(Thread)
    user = models.ForeignKey(User)

class Message(models.Model):
    thread = models.ForeignKey(Thread)
    sent_date = models.DateTimeField(default=datetime.now)
    body = models.TextField()
    user = models.ForeignKey(User)

class MessageReadState(models.Model):
    message = models.ForeignKey(Message)
    user = models.ForeignKey(User)
    read_date = models.DateTimeField()

1 个答案:

答案 0 :(得分:0)

你真的不需要这个thread_pk = models.PositiveIntegerField(default=self.pk)行来使你的ForeignKey工作。

这部分代码:

class Message(models.Model):
    thread = models.ForeignKey(Thread)

完全没问题,你似乎不需要任何其他东西。

以下是关于Django中FK用法的参考:link

但如果您不需要Thread模型中的其他字段 - 那么只需放置以下内容:

id = models.AutoField(primary_key=True) 

这是必要的,因为否则syncdb将不会为该模型创建表。

文档:link