2013-11-03 47 views
0

如何使用是/否字段创建模型,如果是,则将使用特定对象(图像)作为背景,并且不会选择其他图像。Django - 从多个对象中仅选择1个对象的模型

我来到这个模型:

class BackgroundImage(models.Model): 
    user = models.ForeignKey(user) 
    caption = models.CharField(max_length=200) 
    image = models.ImageField(upload_to=get_upload_file_name) 
    using_image = models.BooleanField() 

但是这个我可以选择所有的人,而不是唯一的一个。

编辑:

让我们轮廓图像的一个例子。用户可以有很多图像,但他只能选择一个作为个人资料图片。所以,如果他选择了一个,那么其他人就不会选择自己。希望大家明白我的意思。请问我是否不明白。如果我的模型不正确,也请纠正我。谢谢!

+1

你有没有尝试使用选择现场https://docs.djangoproject.com/en/dev/ref/models/fields/ #choices – Gaurav

+0

我认为你对choosefield的要求是正确的吗? –

+0

@GlynJackson请检查编辑。 – Aamu

回答

1

您可以添加一个save()挂钩以确保没有其他BackgroundImage给定的用户有标志。 (另外,你会希望该列是db_index=True出于性能的原因。)

def save(self, *args, **kwargs): 
    if self.use_image: 
     BackgroundImage.objects.filter(user=self.user).update(use_image=False) 
    super(BackgroundImage, self).save(*args, **kwargs) 
+0

谢谢你的回答。但是,我是一个新手。请您再详细解释一下。 :) – Aamu