0

我想了解django模型中的許多多功能場邏輯。django多對多模型簡單邏輯

我有兩個django模型:locationimage

我還有另一個名爲location_has_image的django模型。這個模型是以這種形式定義的。

class location_has_image(models.Model): 
    of_location = models.ForeignKey(location,related_name="of_location") 
    of_image = models.ForeignKey(image,related_name="of_image") 

我的問題是,我一定要保存的東西到這個模型時,我保存新的locationimage對象?或者將這個location_has_image自動設置爲那些新創建的對象?或者我在這裏以錯誤的方式思考?

請幫忙!

+0

確實是''add''做我想做的是什麼? – doniyor 2013-03-28 03:07:08

回答

1

您應該使用ManyToManyField來代替。它爲您創建中間連接表並對其進行管理。從Django文檔

例子:

from django.db import models 

class Publication(models.Model): 
    title = models.CharField(max_length=30) 

    def __unicode__(self): 
     return self.title 

    class Meta: 
     ordering = ('title',) 

class Article(models.Model): 
    headline = models.CharField(max_length=100) 
    publications = models.ManyToManyField(Publication) 

    def __unicode__(self): 
     return self.headline 

    class Meta: 
     ordering = ('headline',) 

例子: https://docs.djangoproject.com/en/dev/topics/db/examples/many_to_many/

現場文檔: https://docs.djangoproject.com/en/dev/ref/models/fields/#ref-manytomany

+0

謝謝。所以,那麼我不需要那個''location_has_image''模型,對吧?相反,我會做一個''圖像'領域到許多tomanyfield指位置,對吧? – doniyor 2013-03-28 03:12:06

+0

我認爲,我的情況應該更多''oneToMany''因爲一個位置可以有多個圖像,並且多個圖像屬於一個位置,對嗎? – doniyor 2013-03-28 03:17:31

+0

如果圖像只與一個位置相關,則不需要中間表或ManyToManyField。只需在圖像上使用ForeignKey字段。 – Sologoub 2013-03-28 03:19:52