2015-10-10 121 views
1

我創建了一個網站,當用戶上傳圖片時,我檢測到該圖片上的對象並顯示它們。因此,這裏是我的模型:如何在django的視圖中使用多個模型實例?

class Document(models.Model): 
    docfile = models.FileField(upload_to='documents/%Y/%m/%d') 
    imgfile = models.FileField(upload_to='documents/%Y/%m/%d',default='settings.MEDIA_ROOT/default/default.jpg') 
    catagory = models.CharField(max_length=100,default="unknow") 

的DOCFILE是原始圖像,imgfile是我的形象在標籤對象的圖像,產品類別爲對象的類別。

我的問題是圖像中可能存在多個對象,因此我的視圖中可能有多個Document實例,但我並不確切知道事先需要多少實例,因爲這取決於檢測結果。

那麼我該如何實現呢?如果我可以在視圖中使用文檔列表,如何在我的html模板中顯示此列表中的內容?謝謝。

+0

聽起來像是你要使用Django的[表單集(https://docs.djangoproject.com/en/ 1.8/topics/forms/formsets /),它允許您一次創建/編輯多個對象實例。 – solarissmoke

回答

1

你可以改變你的模型一點:

class BaseImage(models.Model): 
    docfile = models.FileField(upload_to='documents/%Y/%m/%d') 
class Document(models.Model): 
    base_image = models.ForeignKey(BaseImage) 
    imgfile = models.FileField(upload_to='documents/%Y/%m/%d',default='settings.MEDIA_ROOT/default/default.jpg') 
    catagory = models.CharField(max_length=100,default="unknow") 

這樣,你可以查詢從基本映像中提取的所有對象:

my_image = BaseImage.objects.get(pk=some_id) 
my_extracted_objects = my_image.document_set.all() 

它可能然後在視圖中發送該查詢集在您的上下文和模板中顯示每個:

{% for document_object in my_extracted_objects %} 
    <img src="{{ MEDIA_URL }}{{ document_object.imgfile.url }}"> 
{% endfor %} 

如果我缺少索姆誤解或誤解了這個問題,請讓我知道。

+0

謝謝!,這正是我需要的。但是爲了方便起見,我做了一些修改,我把它們放在下面的答案中。 – Demonedge

0

正如@ cdvv7788說,我做了一些改變: 在我的意見,我用:用戶上傳

my_images = Document.objects.filter(base_image=newdoc.id) 

凡newdoc是BaseImage實例,即圖像。

雖然在我的HTML模板,我有下面的代碼列出所有檢測結果:

{%for image in my_images%} 
    <img src="{{image.imgfile.url}}"> 
{%endfor%} 
相關問題