Джанго: модельный вопрос - PullRequest
0 голосов
/ 29 июня 2011

Здравствуйте, я хочу внести изменения в мой models.py.

У меня есть две таблицы.Клиент и Примечание.То, что я хочу сделать, это иметь поле примечания в таблице клиентов, которое должно иметь какое-то отношение один к одному с таблицей примечаний.

Тем не менее, заметка должна будет хранить некоторых пользователя, клиента и дату времени.Поэтому мне нужен другой стол для этого.Но мне нужны отношения один-один с клиентом и заметкой.

Клиент должен хранить только одну заметку.У заметки есть пользователь, дата и время, текстовое поле заметки и клиент (если у меня есть поле заметки в таблице клиента, я не думаю, что мне нужна эта запись).

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 ]

1 голос
/ 29 июня 2011

Я не совсем понял вопрос, но, думаю, вам нужен OneToOneField

0 голосов
/ 29 июня 2011

Джастинас прав.Вы должны добавить поле заметки к вашей модели клиента, что делает 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
...