django - 自动填充模型中的字段

时间:2013-12-01 13:57:19

标签: django django-models

请查看我的models.py。

models.py:

class Thread(models.Model):
    pass

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. 每当我创建新邮件时,如何在不手动创建新帖子的情况下,使用主键自动填充主题?
  2. 如果用户不在ThreadParticipant中,如何创建新用户,或者不创建新用户?
  3. 我想我可以在views.py中解决这个问题,但我认为在models.py中解决这个问题会更好。请帮我解决问题。我会很感激。谢谢。

    修改

    假设我需要创建一条新消息。步骤将是:

    1. 我必须先创建一个新的Thread
    2. 同样,我必须为该线程(ThreadParticpant)创建一个新的pk
    3. 我必须让发送邮件的用户为ThreadParticipant创建新用户(参与者)。
    4. 所以我的问题是,当我尝试创建新消息时,我不想先创建新线程或创建一组新的ThreadParticipants。我只是希望它在后台,所以我所要做的就是创建一条消息并将其发送给用户。因此,我的问题是:

      1. 如何自动在后台创建新主题并将其pk用于ThreadParticipant
      2. 因此,如果ThreadParticipant有新的线程要关联,我如何获得发送消息的用户并为该组线程参与者创建新用户?
      3. 可以通过覆盖save方法或类方法来完成吗?

1 个答案:

答案 0 :(得分:1)

对于您的第一个问题,我认为您应该使用Fdjango-dynamic-fixture功能 对于第二个问题,请使用此User.objects.get_or_create(conditions)