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