Django:模型问题

时间:2011-06-29 09:44:46

标签: python django models

您好我想对models.py进行更改。

我有两张桌子。客户和注释。我想要做的是在clients表中有一个note字段,它与Note表有一对一的关系。

但是,该笔记必须存储一些用户,客户端和日期时间。所以我需要另一张表来做到这一点。但我希望与客户建立一对一的关系并注意。

客户应该只能存储在一个便笺中。注释有一个用户,日期时间,一个注释文本字段和客户端(如果我在客户表中有一个注释字段,我认为我不需要这个条目)。

models.py

   class Client(models.Model):
        name = models.CharField(max_length = 40)
        telephone = models.CharField(max_length = 20)
        website = models.URLField(verify_exists = False)
        fax = models.CharField(max_length = 20)
        email = models.EmailField()
        is_active = models.BooleanField()
        def __unicode__(self):
            return self.name

    class Note(models.Model):
        client = models.ForeignKey(Client)
        datetime = models.DateTimeField(default=datetime.now)
        user  = models.ForeignKey(User)
        note = models.TextField()

        def __unicode__(self):
            return unicode(self.user)

2 个答案:

答案 0 :(得分:1)

我不太明白这个问题,但我想你需要OneToOneField

答案 1 :(得分:0)

贾斯汀娜是对的。您应该在客户端模型中添加一个注释字段,这会使您的Note模型上的FK过时。这样的事情应该让你开始:

class Note(models.Model):
    datetime = models.DateTimeField(default=datetime.now)
    user  = models.ForeignKey(User)
    note = models.TextField()

    def __unicode__(self):
        return unicode(self.user)

class Client(models.Model):
    name = models.CharField(max_length = 40)
    telephone = models.CharField(max_length = 20)
    website = models.URLField(verify_exists = False)
    fax = models.CharField(max_length = 20)
    email = models.EmailField()
    is_active = models.BooleanField()
    note = models.OneToOneField(Note)

    def __unicode__(self):
        return self.name