Django Models:Inline没有ForeignKey

时间:2014-12-04 18:25:42

标签: python django django-models

我已经在堆栈上阅读了一些这样的问题,但我无法得到我想要的结果。

我有一个简单的models.Model类,在名为Driftwood()的应用中名为driftwoods。在另一个应用galleries中,我的模型GalleryPiece使用Driftwood() ForeginKey()

我可以让Driftwood()拥有ForiegnKey()GalleryPiece(),通过查看其他代码示例应该有效。但我想在商店应用中重用我的Driftwood()模型,使用ForeingKey(),就像我在GalleryPiece()中一样,但不要与galleries应用绑定。

这是可能的,还是我必须制作GalleryDriftwood()ProductDriftwood()型号?我知道这更有意义,但我会将所有Driftwood()都放在一个表格中。

的myproject / driftwoods / models.py

class Size( models.Model ):
    length = models.IntegerField()
    width  = models.IntegerField()
    height = models.IntegerField()

class Driftwood( models.Model ):
    name            = models.CharField( max_length=60, default='driftwood' )
    weight          = models.FloatField()
    size            = models.ForeignKey( Size )
    image           = models.ImageField( upload_to='static/driftwoods/' )

的myproject /画廊/ models.py

from driftwoods.models import Driftwood

class Gallary( models.Model ):
    name            = models.CharField( max_length=60 )
    image           = models.ImageField( upload_to='static/galleries/' )


class GallaryPiece( models.Model ):
    name            = models.CharField( max_length=60 )
    gallary         = models.ForeignKey( Gallary )
    driftwood       = models.ForeignKey( Driftwood )

我打算像这样使用商店应用程序。

from driftwoods.models import Driftwood

class Product( models.Model ):
    driftwood = models.ForeignKey( Driftwood )
    price     = models.FloatField()

我添加Driftwood()模型的唯一方法是通过TabularInline中的gallaries/admin.py课程。

的myproject / driftwoods / admin.py

# NOTHING, ADD DRIFTWOOD BY CREATING A GALLEY PIECE

的myproject /画廊/ admin.py

from driftwoods.models import Driftwood

class DriftwoodInline( admin.TabularInline ):
    model = Driftwood


class GallaryAdmin( admin.ModelAdmin ):
    fieldsets = [
            (None,                  {'fields': ['name']} ),
            ('Date Information',    {'fields': ['pub_date']} ),
            ('Gallary Image',       {'fields': ['image']} ),
    ]


class GallaryPieceAdmin( admin.ModelAdmin ):
    fieldsets = [
            (None,                  {'fields': ['name']} ),
            ('Date Information',    {'fields': ['pub_date']} ),
            ('Description',         {'fields': ['description']} ),
    ]
    inlines = [DriftwoodInline]


admin.site.register( Gallary, GallaryAdmin )
admin.site.register( GallaryPiece, GallaryPieceAdmin )
P.S我现在正在船上,所以我会在大约2-3个小时内回来接一个答案。一如既往,我很感激帮助(谁没有)。

0 个答案:

没有答案