2013-03-11 112 views
2
class One(models.Model): 
    image = models.ImageField(upload_to="images") 
    summary = models.TextField() 

    def __unicode__(self): 
     return self.summary 


class Two(models.Model): 
    image = models.ImageField(upload_to="images") 
    title = models.CharField(max_length=50) 

    def __unicode__(self): 
     return self.title 


class Three(models.Model): 



    one = models.ForeignKey(One, related_name='one_home') 
    two = models.ForeignKey(Two, related_name='two_home') 

    def __unicode__(self): 
     return self.tile 

现在我想要显示一个和两个在Django Admin中的三个内联。Django管理内嵌显示,但外键有相反的关系

我到处搜索,但内联显示给出了相反的关系。就像一个有三个外键的地方一样。而不是我想要的其他方式。

+0

这是完全可以显示一个和二为三的内联,你只需要移动的关系船到其他型号。在模型三中定义这些关系有什么原因吗? – 2013-03-11 13:34:31

+0

是的模型必须是像我这样的要求...我不想在模型上做出改变 – KetanJogani 2013-03-11 15:14:18

+0

这似乎在Django admin中不可行,因为当构建'Three'时,它需要有'One'的ID和可以保存前两个''。 Django管理员无法告诉它“保存一个,然后保存两个,然后保存三个”。它将尝试使用一条SQL命令将所有内容保存到数据库。你必须改变你的模型才能以你想要的方式工作。 – themanatuf 2013-03-11 15:18:25

回答

0

相当简单:

您的模型是“破碎”,三个可以只有1个1和1两个。

对于One and Two实体,您可以列出三个列表。

如果颠倒外键,改变他们的(都指向@三)款

class OneToThreeInline(admin.StackedInline): 
    fk_name = 'three' 
    model = One 

class TwoToThreeInline(admin.StackedInline): 
    fk_name = 'three' 
    model = Two