【问题标题】:Django foreign key questionDjango外键问题
【发布时间】:2011-02-01 12:00:30
【问题描述】:

全部,

我定义了以下模型,

  class header(models.Model):
     title = models.CharField(max_length = 255)
     created_by = models.CharField(max_length = 255)

     def __unicode__(self):
       return self.id()

 class criteria(models.Model):
     details =   models.CharField(max_length = 255)
     headerid = models.ForeignKey(header)

     def __unicode__(self):
       return self.id()

 class options(models.Model):
     opt_details =   models.CharField(max_length = 255)
     headerid = models.ForeignKey(header)

     def __unicode__(self):
       return self.id()

在我看来,我有

           p= header(title=name,created_by=id)
           p.save()

现在数据将保存到标题表中。我的问题是,对于标题表中生成的这个 id,如何将数据保存到标准和选项表中。请告诉我。

谢谢..

【问题讨论】:

  • 请使用大写的类名。

标签: python django django-models django-templates django-views


【解决方案1】:

鉴于您的:

p= header(title=name,created_by=id)
p.save()

您现在可以:

c=criteria(details='some details', headerid=p)
c.save()
o=options(opt_details='more details', headerid=p)
o.save()

希望这会有所帮助。

【讨论】:

    【解决方案2】:

    利用<related>_set 查询管理器,它比在单独的操作中构造和保存对象更清晰、更短。

    h = header.objects.create(title=name,created_by=id)
    c = h.criteria_set.create(details='some details')
    o = h.options_set.create(opt_details='more details')
    

    还有一些题外话:请以大写字母开头类名,这确实使代码更易于阅读。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-21
      • 1970-01-01
      • 2013-09-13
      • 2019-06-30
      • 2018-02-15
      • 2011-07-14
      相关资源
      最近更新 更多