2016-01-29 150 views
1

我正在嘗試創建可編輯的對象集。 我有Visitor模型,它可以包含一組模型Sibling。但是該集可能是空白的。這個集合應該可以在Django admin中編輯,並且我希望它會由內置工具生成。在Django中創建可編輯的模型對象集管理

這裏是我的方法來做到這一點:

class Sibling(models.Model): 
    VisitorID = models.ForeignKey('Visitor') 
    # ... some fields 

class Visitor(models.Model): 
    # ... some fields 

    Siblings = models.ManyToManyField(Sibling, blank=True) 

這是不錯的方法,因爲有來自於Django管理自動生成的表單中的所有遊客都兄弟姐妹,但我想只有那些涉及到具體訪客。

任何人都可以幫助我或提供建議嗎?

+1

你有兄弟姐妹的外鍵和訪客中的多對多鍵。我不認爲你需要後者 –

+0

@joelgoldstick如果我刪除了多對多的關係,那麼我將不會在Visitor的生成頁面上爲兄弟姐妹編輯表單。有沒有另一種方法來做到這一點? – eLTG

回答

0

一種方式與串行器類

class Sibling(models.Model): 
    VisitorID = models.ForeignKey('Visitor') 
    # ... some fields 


class Visitor(models.Model): 
    # ... some fields 


class VisitorSerializer(serializers.ModelSerializer): 

    sibling = serializers.RelatedField(source='sibling') 

    class Meta: 
     model = Visitor 
     # List all fields in Visitor plus sibling 
     fields = ('id', 'somefieldinvisitormodel', 'sibling') 

串行器類可以重寫什麼顯示在管理員無需與你的模型惹實現這一目標。這也可以讓您刪除您在訪客中添加的額外關係。

這不是一個完全自動化的解決方案,但它很接近。

相關問題